SÔbrustame RaspberryPi ja TP-Link TL-WN727N

Tere, Habr!

MĂ”tlesin, et ĂŒhendan oma malinka internetiga juhtmevabalt.

Nii see sai teoks, ostsin lĂ€himast poest USB Wi-Fi dongli tuntud firma TP-Linki tootemargiga. Ütlen kohe, et see ei ole mingi nano USB moodul, vaid ĂŒsna korralik seade, suuruselt umbes nagu tavaline mĂ€lupulk (vĂ”i kui soovite, siis nagu tĂ€iskasvanud mehe keskmine sĂ”rm). Enne ostmist uurisin natuke, millised tootjad toetavad RPI-d ning TP-Link oli nimekirjas (kuigi hiljem selgus, et ma ei arvestanud kĂ”iki nĂŒansse, sest nagu teada, peitub kurat detailides). Nii algab mu kĂŒlm jutt mu hĂ€dade kohta, teie tĂ€helepanu all on detektiivjutt 3 osas. Huvi tundnud palun allapoole.

Artikkel Ühendame WiFi-adapteri WN727N Ubuntu/Mint sĂŒsteemiga aitas osaliselt, aga kĂ”ik Ă”igeks ajaks.

Ülesande tingimused

Antud:

  1. ĂŒheplaadine arvuti Raspberry Pi 2 B v1.1 — 1 tĂŒkk
  2. USB Wi-Fi dongel WN727N — 1 tĂŒkk
  3. paar mitte pĂ€ris kĂ”veraid kĂ€si — 2 tĂŒkki
  4. operatsioonisĂŒsteemiks on viimase versiooni Raspbian (Debiani 10 Buster baasil)
  5. tuumaversioon 4.19.73-v7+

Leidke: saavutada ĂŒhendus internetiga (Wi-Fi tuleb kodusest ruuterist)

PĂ€rast adapteri lahti pakkimist loen juhendit seest:

SĂŒsteemi ĂŒhilduvus: Windows 10/8/7/XP (isegi XP) ja MacOS 10.9-10.13

Hmm, Linuxist ei olnud nagu tavaliselt sÔnagi. Aastal 2019 oli ikka veel vaja draivereid kÀsitsi kokku panna...

Meil oli kaasas 2 kompilaatorit, 75 tuhat raamatukogu, viis binaarset blob'i, pool tusside rida logoga ja terve meri pealkirju kĂ”ikidest keeltest ja mĂ€rgistuskeeltest. See ei olnud otseselt vajalik komplekt tööks. Kuid kui oled juba alustanud sĂŒsteemi koostamist enda jaoks, on raske peatuda. Ainus, mis mind murelikuks tegi, olid Wi-Fi draiverid. Pole midagi abitumat, vastutustundetumat ja rikutumat kui draiverite kokkupanek lĂ€htekoodidest. Kuid ma teadsin, et varem vĂ”i hiljem jĂ”uame me ka selle jama juurde.

Üldiselt on teada, et USB Wi-Fi-ga mĂ€ssamine Linuxis on valus ja natuke maitsev (nagu vene sushi).

Karbis on veel CD-disk draiveritega. Ilma eriliste lootusteta vaatan, mis seal on — tĂ€pselt, nad ei ole hoolitsenud. Internedi otsing suunas mind tootja kodulehele, kuid seal oli Linuxi draiver ainult seadme rev. jaoks v4, aga mul oli kĂ€es v5.21. Ja ja vanematele tuumaversioonidele 2.6-3.16. Pettunud ebaĂ”nnestumise tĂ”ttu juba alguses, mĂ”tlesin, et oleks pidanud valima TL-WN727N (see on veidi kallim ja toetab 300Mbps, vĂ”rreldes 150Mbps minu omaga, kuid nagu selgus, ei ole see Raspberri jaoks ĂŒldse oluline, sellest kirjutatakse hiljem). Kuid mis kĂ”ige tĂ€htsam, juhtmed selle jaoks juba olemas ja neid on lihtne installida paketina. firmware-ralink. Seadme revideerimist saab tavaliselt vaadata seadme korpuselt, kleebiselt koos seerianumbriga.

Edasi otsimine ja erinevate foorumite kĂŒlastamine ei toonud eriti head tulemust. Tundub, et enne mind ei olnud keegi sellist adapterit Linuxiga ĂŒhendamas. Jah, mul on tĂ”eliselt vedanud nagu uppuja.

Kuid ei, valetasin, foorumite kĂŒlastamine (peamiselt ingliskeelsed) andis siiski tulemusi, mĂ”nes arutelus mainiti isikut lwfinger, kes on tuntud oma WiFi adapterite draiverite kirjutamise poolest. Tema GitHubi hoidla on artikli lĂ”pus linkides. Ja teine Ă”ppetund, mille ma sain — on vajalik oma seadme tuvastamine, et mĂ”ista, milline draiver sellele sobib.

Osa 1. Tuvastamine

Seadet porti ĂŒhendades ei sĂŒttinud ĂŒkski LED. Ja ĂŒldse ei ole aru saada, kas midagi töötab vĂ”i mitte.

Esimese asjana, et vÀljas selgitada, kas tuum nÀeb meie seadet, vaatan dmesg'i:

[  965.606998] usb 1-1.3: uus kÔrgkiirus USB seade number 9 kasutades dwc_otg
[  965.738195] usb 1-1.3: Uus USB seade leitud, idVendor=2357, idProduct=0111, bcdDevice= 0.00
[  965.738219] usb 1-1.3: Uued USB seadme stringid: Mfr=1, Toode=2, Seerianumber=3
[  965.738231] usb 1-1.3: Toode: 802.11n NIC
[  965.738243] usb 1-1.3: Tootja: Realtek
[  965.738255] usb 1-1.3: Seerianumber: 00E04C0001

Selgus, et nÀeb, ja isegi on selge, et seal on Realteki chip ja seadme VID/PID USB bussil.

Liikuda edasi, vaatame lsusb, ja siin ootab meid jÀrgmine ebaÔnnestumine

Bus 001 Device 008: ID 2357:0111 
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. SMC9514 Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

SĂŒsteem ei tea, mis seadmega on tegu, ja hĂ€benedes kuvab nime asemel tĂŒhja kohta (kuigi tootja=2357 on kindlasti TP-Link).

Selle etapi jooksul on uudishimuliku lugeja ilmselt juba mÀrganud midagi huvitavat, kuid jÀtame selle hilisemaks.

Probleemi uurimine tĂŒhjade nimedega viis mind lehe juurde, kus on loetletud tuntud VID/PID. Meie 2357:0111 seal ei olnud. Hiljem selgus, et utiliit lsusb kasutab faili /usr/share/misc/usb.ids, mis on sama identifikaatorite loend sellelt veebisaidilt. Ilusa kuvamise jaoks lisasin lihtsalt oma sĂŒsteemi ridade jaoks TP-Linki mĂŒĂŒjalt.

2357  TP-Link
        0111  TL-WN727N v5.21

Nii et seadmete loendis parandasime kuvamist, kuid see ei aidanud meid juhendite valimisel sammukestki edasi. Juhendi valimiseks tuleb teada, millisel kiibil su adapter on tehtud. JĂ€rjekordsed tulutud katsed Internetis seda teada saada ei viinud headeni. Varustades end peene Phillipsi kruvikeerajaga, tĂ”stan ettevaatlikult adapteri katte ja minu silmade ette avanes kogu oma algses paletuses onu Liao patune lapsuke. Luubi all on vĂ”imalik kiibi nimi nĂ€ha — RTL8188EUS. See on juba hea. MĂ”nedes foorumites olen nĂ€inud postitusi, et sellele kiibile sobib nĂ€iteks see juhend, mille on kirjutanud hĂ€rra lwfinger (isegi kui tal on kirjas ainult RTL8188EU kohta).

Osa 2. Borna ĂŒlevus

Laen juhendi allikaid gitist.

On aeg Windows uuesti installida ja tegeleda sellega, mida tavaliselt seostatakse Linuxi kasutajatega – midagi allikast kokku panema. Juhendite kokkupanek osutub olevat vĂ€he erinev programmide kompileerimisest:

make
sudo make install

aga tuumamoodulite kompileerimiseks vajame meie konkreetse versiooni jaoks tuuma pÀiseid.

Defaults-repositooriumis on pakett raspberrypi-kernel-headers, kuid see sisaldab failide versiooni tuumale 4.19.66-v7l+, ja see ei sobi meile. Kuid vajalikku versiooni pĂ€iste saamiseks, nagu selgub, on mugav tööriist rpi-source (link lĂ”puks GitHubis), millega saab alla laadida vajalikud pĂ€ised. Kloonime repositoorsiumi, teeme skripti tĂ€idetavaks, kĂ€ivitame. Esimene kĂ€ivitamine ebaĂ”nnestub veaga — utiliiti pole. bcÕnneks on see repositooriumis ja me lihtsalt installime selle.

sudo apt-get install bc

PÀrast seda, kui uuesti kÀivitame ja pÀiste laadimine (ja hiljem millegi seadistamine, seda ma enam ei mÀleta) vÔtab aega ning vÔib tagasi eemalduda tooli seljatoele, Windows on igas oma vÀljenduses parem.

PĂ€rast seda, kui kĂ”ik pĂ€ised on alla laaditud, kontrollime, et kataloog on olemas /lib/modules/4.19.73-v7+ ning seal on sĂŒmboolne link, mis osutab kohtadele, kus alla laaditud failid asuvad (minu puhul see on /home/pi/linux):

pi@raspberrypi:/home/pi/rtl8188eu# ls -l /lib/modules/4.19.73-v7+/
lrwxrwxrwx  1 root root     14 Sep 24 22:44 build -> /home/pi/linux

Valmistusprosessin vaihe on ohitettu, voimme aloittaa kokoamisen. Modulien kokoaminen vie taas hieman aikaa, Raspberry Pi ei ole nopein laite (sen prosessori on 32-bittinen 900 MHz Cortex ARM v7).
Niin, kaikki on kÀÀnnetty. Asennamme ajurin toisessa vaiheessa (make install), samalla kopioidaan myös muita ajurille tarvittavia firmware-tiedostoja:

install:
        install -p -m 644 8188eu.ko  $(MODDESTDIR)
        @if [ -a /lib/modules/$(KVER)/kernel/drivers/staging/rtl8188eu/r8188eu.ko ] ; then modprobe -r r8188eu; fi;
        @echo "blacklist r8188eu" > /etc/modprobe.d/50-8188eu.conf
        cp rtl8188eufw.bin /lib/firmware/.
        /sbin/depmod -a ${KVER}
        mkdir -p /lib/firmware/rtlwifi
        cp rtl8188eufw.bin /lib/firmware/rtlwifi/.

Osa 3. Bornin uhka

Laitan tikun porttiin ja
 mitÀÀn ei tapahdu. Onko kaikki tĂ€mĂ€ ollut turhaa?

Aloin tutkia projektin tiedostoja ja löysin yhdestÀ niistÀ ongelman syyn: ajurissa on mÀÀritelty tÀydellinen luettelo kÀytettÀvissÀ olevista VID/PID-tunnisteista. Jotta laitteeni toimisi tÀmÀn ajurin kanssa, lisÀsin vain oman id:ni tiedostoon rtl8188eu/os_dep/usb_intf.c

static struct usb_device_id rtw_usb_id_tbl[] = {
        /*=== Realtek demoboard ===*/
        {USB_DEVICE(USB_VENDER_ID_REALTEK, 0x8179)}, /* 8188EUS */
        {USB_DEVICE(USB_VENDER_ID_REALTEK, 0x0179)}, /* 8188ETV */
        /*=== Customer ID ===*/
        /****** 8188EUS ********/
        {USB_DEVICE(0x07B8, 0x8179)}, /* Abocom - Abocom */
        {USB_DEVICE(0x0DF6, 0x0076)}, /* Sitecom N150 v2 */
        {USB_DEVICE(0x2001, 0x330F)}, /* DLink DWA-125 REV D1 */
        {USB_DEVICE(0x2001, 0x3310)}, /* Dlink DWA-123 REV D1 */
        {USB_DEVICE(0x2001, 0x3311)}, /* DLink GO-USB-N150 REV B1 */
        {USB_DEVICE(0x2001, 0x331B)}, /* D-Link DWA-121 rev B1 */
        {USB_DEVICE(0x056E, 0x4008)}, /* Elecom WDC-150SU2M */
        {USB_DEVICE(0x2357, 0x010c)}, /* TP-Link TL-WN722N v2 */
        {USB_DEVICE(0x2357, 0x0111)}, /* TP-Link TL-WN727N v5.21 */
        {}      /* Terminating entry */
};

KÀÀnsin ajurin uudelleen ja asensin sen taas jÀrjestelmÀÀn.

Ja tÀllÀ kertaa kaikki toimi. Adapterin valo syttyi ja verkkoliittymÀluettelossa ilmestyi uusi laite.

Langattomien liitÀntöjen tarkastelu antaa seuraavat tiedot:

pi@raspberrypi:/home/pi/rtl8188eu# iwconfig
eth0      ei langattomia laajennuksia.

lo        ei langattomia laajennuksia.

wlan0     ei yhdistetty  ESSID:""  Nimi:""
          Tila:Automaattinen  Taajuus=2.412 GHz  PÀÀsykohta: Ei-yhdistetty   
          Herkkyys:0/0  
          Uusintayritys:ei   RTS thr:ei   Fragmentointi thr:ei
          Salausavain:pois kÀytöstÀ
          VirrankÀyttöhallinta:pois kÀytöstÀ
          Linkin laatu=0/100  Signaalitason taso=0 dBm  Melutason taso=0 dBm
          Rx virheelliset nwid:0  Rx virheelliset kryptot:0  Rx virheelliset fragmentit:0
          Tx liiallisia yrityksiÀ:0  VirheellisiÀ muita:0   Ohitettu beacon:0

Bonusta niille, jotka lukivat loppuun

Muistatko, mitÀ sanoin siitÀ, ettei ole vÀliÀ, mikÀ on ilmoitettu maksiminopeus adapterillesi?
Nii et, Raspberries (enne mudeli 4 vĂ€ljumist) on kĂ”ik seadmed (sealhulgas etherneti adapter) seotud ĂŒhe usb sĂ”iduteega. SuurepĂ€rane, eks? Ja seetĂ”ttu jaguneb usb sĂ”idutee lĂ€bilaskevĂ”ime kĂ”igi seadmete vahel. Kiiruseteste tehes - nii etherneti kui ka usb wi-fi kaudu (ĂŒhendatud ĂŒhe ruuteriga) - Ă”hus ja juhtmega, nĂ€itas see umbes 20 Mbit/s.

P.S. Tegelikult kehtib see juhend selle konkreetse adapteri draiveri kompileerimiseks mitte ainult RPI puhul. Kordasin seda ka oma lauaarvutis Linux Mintiga - seal töötas samuti kÔik. Lihtsalt peate tÀpselt sama, et alla laadida Ôiged pÀisefailid oma kasutatava kerneli versiooni jaoks.

UPD. Teadlikud inimesed soovitasid: et mitte sÔltuda kerneli versioonist, tuleks draivereid koguda ja installida dkms abil. README failis on ka see variant.

pi@raspberrypi:/home/pi# sudo dkms add ./rtl8188eu
pi@raspberrypi:/home/pi# sudo dkms build 8188eu/1.0
pi@raspberrypi:/home/pi# sudo dkms install 8188eu/1.0

UPD2. Ettepanek patƥ seadme ID vÔeti laiemasse haru lwfinger/rtl8188eu hoidlast.

Viidatud lingid
— RPi USB Wi-Fi adapterid
— GitHub lwfinger/rtl8188eu
— usb.ids
— rpi-source

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster