Eigum RaspberryPi vini með TP-Link TL-WN727N

Hæ Habr!

Ég ákvað einu sinni að tengja hindberið mitt við netið í gegnum loftið.

Ekki fyrr sagt en gert, í þessu skyni keypti ég usb wi-fi flautu frá hinu þekkta fyrirtæki TP-Link í næstu verslun. Ég segi strax að þetta er ekki einhvers konar nano usb eining, heldur töluvert stórt tæki, á stærð við venjulegt flash-drif (eða, ef þú vilt, á stærð við vísifingur fullorðins manns). Áður en ég keypti, gerði ég smá könnun á listanum yfir studda flautuframleiðendur fyrir RPI og TP-Link var á listanum (þó, eins og það kom í ljós síðar, tók ég ekki tillit til fíngerðanna, því djöfullinn, eins og við vitum , er í smáatriðum). Svo hefst kalda sagan um ófarir mínar; við kynnum þér leynilögreglusögu í 3 hlutum. Fyrir áhugasama vinsamlegast vísað til cat.

Gr Að tengja WN727N WiFi millistykkið við Ubuntu/Mint Það hjálpaði mér að hluta, en fyrst og fremst.

Skilyrði vandamálsins

Gefið:

  1. einborðstölva Raspberry Pi 2 B v1.1 – 1 stykki
  2. usb wi-fi flauta WN727N - 1 stykki
  3. par af ekki alveg skakkum höndum - 2 stykki
  4. Nýjasta Raspbian er sett upp sem stýrikerfi (byggt á Debian 10 Buster)
  5. kjarnaútgáfa 4.19.73-v7+

Finndu: tengdu við internetið (Wi-Fi er dreift frá heimabeini)

Eftir að hafa pakkað millistykkinu upp las ég leiðbeiningarnar inni:

Kerfissamhæfi: Windows 10/8/7/XP (jafnvel himininn, jafnvel XP) og MacOS 10.9-10.13

Hmm, eins og venjulega, ekki orð um Linux. Það var 2k19, og enn þurfti að setja saman driverana handvirkt...

Við höfðum með okkur 2 þýðendur, 75 þúsund bókasöfn, fimm tvöfalda blöð, hálfan fjölda nöktra kvenna með lógói og heilan sjó af hausum af öllum tungumálum og merkingum. Ekki það að þetta sé nauðsynlegt sett fyrir starfið. En þegar þú byrjar að setja saman kerfi fyrir þig verður erfitt að hætta. Það eina sem olli mér áhyggjum voru ökumenn fyrir Wi-Fi. Það er fátt hjálparlaust, ábyrgðarlaust og spilltara en að byggja ökumenn frá uppruna. En ég vissi að fyrr eða síðar myndum við skipta yfir í þetta drasl.

Almennt, eins og þú veist, er það að fikta með usb Wi-Fi á Linux sársaukafullt og nokkuð bragðlaust (eins og rússneskt sushi).

Í kassanum er líka geisladiskur með reklum. Án mikillar vonar horfi ég á það sem er á því - þeir hafa örugglega ekki séð um það. Netleit leiddi mig á heimasíðu framleiðandans, en þar er Linux rekla eingöngu til endurskoðunar tækisins v4, og í fanginu á mér var v5.21. Og að auki, fyrir mjög gamlar kjarnaútgáfur 2.6-3.16. Ég var niðurdreginn vegna bilunarinnar strax í upphafi og hélt nú þegar að ég hefði átt að taka TL-WN727N (hann er aðeins dýrari og þolir 300Mbps á móti 150 fyrir minn, en eins og það kom í ljós þá skiptir þetta engu máli fyrir hindberið, það verður skrifað um þetta síðar). En það mikilvægasta er að reklar fyrir það eru þegar til og eru einfaldlega settir upp sem pakki vélbúnaðar-ralink. Venjulega er hægt að skoða endurskoðun tækisins á meginhluta tækisins á límmiða við hliðina á raðnúmerinu.

Frekari googl og heimsókn á ýmsum spjallborðum skilaði ekki miklu. Það hefur greinilega enginn á undan mér reynt að tengja svona millistykki við Linux. Hmm, ég er heppinn eins og drukknaður maður.

Þó, nei, ég sé að ljúga, bar það líka ávöxt að heimsækja umræðusvæði (aðallega á ensku); í sumum efnum var minnst á ákveðinn herra lwfinger, sem er frægur fyrir að skrifa fjölda rekla fyrir Wi-Fi millistykki . Git geymslan hans er í lok greinarinnar í krækjunum. Og önnur lexían sem ég lærði er að þú þarft að bera kennsl á tækið þitt til að skilja hvaða bílstjóri gæti hentað fyrir það.

Hluti 1: The Bourne Identity

Þegar tækið var tengt við tengið kviknaði auðvitað engin LED. Og almennt er ekki ljóst á nokkurn hátt hvort eitthvað virkar eða ekki.

Fyrst af öllu, til að komast að því hvort kjarninn sér tækið okkar, lít ég í dmesg:

[  965.606998] usb 1-1.3: new high-speed USB device number 9 using dwc_otg
[  965.738195] usb 1-1.3: New USB device found, idVendor=2357, idProduct=0111, bcdDevice= 0.00
[  965.738219] usb 1-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  965.738231] usb 1-1.3: Product: 802.11n NIC
[  965.738243] usb 1-1.3: Manufacturer: Realtek
[  965.738255] usb 1-1.3: SerialNumber: 00E04C0001

Það kom í ljós að það sér, og það er meira að segja ljóst að það er Realtek flís og VID/PID tækisins sjálfs á usb rútunni.

Förum lengra og skoðum lsusb, og hér bíður okkar enn ein bilun

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

Kerfið veit ekki hvers konar tæki það er, og sýnir skömmustulega tómt rými í stað nafnsins (þó að seljandi=2357 sé örugglega TP-Link).

Á þessu stigi hefur fróðleiksfús lesandi líklega þegar tekið eftir einhverju áhugaverðu, en við látum það bíða okkar tíma.

Rannsókn á vandamálinu við tóm nöfn leiddi mig á síðu með auðkennum, þar sem upplýsingar um þekkt VID/PID eru færðar inn. 2357:0111 okkar var ekki til staðar. Eins og það kom í ljós síðar, gagnsemi lsusb notar skrá /usr/share/misc/usb.ids, sem er sami listi yfir auðkenni frá þessari síðu. Fyrir fegurð skjásins bætti ég einfaldlega við línum fyrir söluaðilann TP-Link í kerfinu mínu.

2357  TP-Link
        0111  TL-WN727N v5.21

Jæja, við leiðréttum skjáinn á listanum yfir tæki, en það færði okkur ekki einu skrefi nær því að velja bílstjóri. Til að velja ökumann þarftu að vita á hvaða flautu flautu er búið. Næstu misheppnaðar tilraunir til að komast að þessu á netinu leiddu ekki til neins góðs. Vopnaður þunnt rifa skrúfjárn, hnýtti ég varlega af millistykkishettunni og grimmt hugarfóstur Liao frænda birtist í allri sinni óspilltu nekt. Undir stækkunargleri má sjá nafn flísarinnar - RTL8188EUS. Þetta er nú þegar gott. Á sumum spjallborðum sá ég færslur um að ökumaðurinn frá þessum sama heiðursmanni lwfinger henti vel fyrir þennan flís (þó hann skrifi bara um RTL8188EU).

Part 2: The Bourne Supremacy

Ég hlaða niður ökumannsheimildum frá Git.

Það er kominn tími til að setja upp Windows aftur og gera það sem Linux notendur eru venjulega tengdir við - að setja saman eitthvað af einhverju tagi. Að setja saman rekla, eins og það kemur í ljós, er lítið frábrugðið því að setja saman forrit:

make
sudo make install

en til að setja saman kjarnaeiningar þurfum við kjarnahausskrárnar fyrir sérstaka útgáfu okkar.

Það er pakki í birgðageymslunni raspberrypi-kjarna-hausar, en það inniheldur kjarnaútgáfu skráanna 4.19.66-v7l+, og það hentar okkur ekki. En til að fá hausana á nauðsynlegri útgáfu, eins og það kom í ljós, er þægilegt tól rpi-uppspretta (tengill í lokin á Github), sem þú getur hlaðið niður nauðsynlegum hausum með. Við klónum geymsluna, gerum handritið keyranlegt og keyrum það. Fyrsta ræsing mistekst með villu - það er ekkert gagn bc. Sem betur fer er það í geymslunni og við setjum það bara upp.

sudo apt-get install bc

Eftir þetta tekur smá tíma að endurræsa og hlaða niður hausunum (og setja svo eitthvað upp, ég man það ekki núna) og þú getur hallað þér aftur í stólnum, Windows er orðið betra í öllum sínum birtingarmyndum.

Eftir að öllum hausunum hefur verið hlaðið niður skaltu athuga að skráin birtist /lib/modules/4.19.73-v7+ og í honum vísar táknhlekkurinn á staðinn þar sem niðurhalaðar skrár eru staðsettar (fyrir mér er það /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

Undirbúningsstigi er lokið, þú getur byrjað samsetningu. Að setja saman einingarnar aftur tekur nokkurn tíma, Raspberry er ekki hröð dýr (það er með 32bit 900Mhz Cortex ARM v7).
Svo allt saman sett. Við setjum upp ökumanninn í 2. skrefi (gerum uppsetningu), en afritum líka fleiri fastbúnaðarskrár sem nauðsynlegar eru til að ökumaðurinn virki:

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/.

Part 3. The Bourne Ultimatum

Ég sting flautunni í portið og... ekkert gerist. Var þetta allt til einskis?

Ég byrja að rannsaka skrárnar inni í verkefninu og í einni þeirra finn ég hvert vandamálið var: ökumaðurinn tilgreinir heildarlista yfir VID/PID auðkenni sem hann getur þjónað. Og til þess að tækið okkar virki með þessum bílstjóra bætti ég einfaldlega auðkenninu mínu við skrána 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 */
};

Ég setti saman driverinn aftur og setti hann aftur upp á kerfið.

Og í þetta skiptið byrjaði allt. Ljósið á millistykkinu kviknaði og nýtt tæki birtist á lista yfir netviðmót.

Skoðun á þráðlausum viðmótum sýnir eftirfarandi:

pi@raspberrypi:/home/pi/rtl8188eu# iwconfig
eth0      no wireless extensions.

lo        no wireless extensions.

wlan0     unassociated  ESSID:""  Nickname:"<WIFI@REALTEK>"
          Mode:Auto  Frequency=2.412 GHz  Access Point: Not-Associated   
          Sensitivity:0/0  
          Retry:off   RTS thr:off   Fragment thr:off
          Encryption key:off
          Power Management:off
          Link Quality=0/100  Signal level=0 dBm  Noise level=0 dBm
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

Bónus fyrir þá sem lesa til enda

Manstu hvernig ég sagði að það skipti ekki máli hvaða hámarkshraði er tilgreindur á millistykkinu þínu?
Svo, á Malinka (áður en gerð 4 kom út) sitja öll tæki (þar á meðal ethernet millistykkið) á sama USB-rútunni. Frábært, ekki satt? Og því er bandbreidd usb strætósins skipt á milli allra tækja á honum. Þegar hraðinn var mældur bæði í gegnum ethernet og í gegnum usb wi-fi (tengdur við 1 router) bæði með flugi og vír var hann um 20Mbit/s.

PS Almennt séð gildir þessi leiðarvísir til að setja saman rekla fyrir þennan tiltekna millistykki ekki aðeins fyrir RPI. Ég endurtók það síðan á skjáborðinu mínu með Linux Mint - allt virkaði þar líka. Þú þarft bara að hlaða niður nauðsynlegum hausskrám fyrir kjarnaútgáfuna þína á sama hátt.

UPD. Fróður fólk lagði til: Til þess að vera ekki háður kjarnaútgáfunni þarftu að safna og setja upp rekla með dkms. Readme fyrir ökumanninn inniheldur einnig þennan möguleika.

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. Lagt til plástur fyrir auðkenni tækis var samþykkt í almennu útibú lwfinger/rtl8188eu geymslunnar.

tilvísanir
- RPi USB Wi-Fi millistykki
- Gitbub lwfinger/rtl8188eu
- usb.ids
- rpi-uppspretta

Heimild: www.habr.com