Ejja nagħmlu ħbieb RaspberryPi b'TP-Link TL-WN727N

Ħej Habr!

Darba iddeċidejt li nqabbad il-lampun tiegħi mal-Internet bl-ajru.

Mhux hekk kif qal milli jsir, għal dan il-għan xtrajt usb wi-fi whistle mingħand il-kumpanija magħrufa TP-Link mill-eqreb ħanut. Jien ngħid mill-ewwel li dan mhuwiex xi tip ta 'modulu nano USB, iżda apparat pjuttost kbir, madwar id-daqs ta' flash drive regolari (jew, jekk tixtieq, id-daqs tas-saba 'l-indiċi ta' raġel adult). Qabel ma xtrajt, għamilt ftit riċerka fuq il-lista ta 'manifatturi ta' whistle appoġġjati għal RPI u TP-Link kien fuq il-lista (madankollu, kif irriżulta aktar tard, ma qistx l-irqaqat, għax ix-xitan, kif nafu , jinsab fid-dettalji). Għalhekk, jibda r-rakkont kiesaħ tad-diżavventuri tiegħi; nippreżentaw għall-attenzjoni tiegħek storja ta’ ditektif fi 3 partijiet. Għal dawk interessati, jekk jogħġbok irreferi għall-qattus.

Artikolu Tqabbad l-adapter WiFi WN727N ma 'Ubuntu/Mint Għenni parzjalment, iżda l-ewwelnett.

Kundizzjonijiet tal-problema

Mogħti:

  1. kompjuter b'bord wieħed Raspberry Pi 2 B v1.1 – biċċa 1
  2. usb wi-fi whistle WN727N - biċċa 1
  3. par idejn mhux pjuttost mgħawweġ - 2 biċċiet
  4. L-aħħar Raspbian huwa installat bħala l-OS (ibbażat fuq Debian 10 Buster)
  5. verżjoni tal-qalba 4.19.73-v7+

Sib: qabbad mal-Internet (Wi-Fi jitqassam mir-router tad-dar tiegħek)

Wara li nħatt l-adapter, naqra l-istruzzjonijiet ġewwa:

Kompatibilità tas-Sistema: Windows 10/8/7/XP (anki s-sema, anke XP) u MacOS 10.9-10.13

Hmm, bħas-soltu, mhux kelma dwar Linux. Kien 2k19, u s-sewwieqa kien għad iridu jiġu mmuntati manwalment...

Kellna magħna 2 kompilaturi, 75 elf librerija, ħames blobs binarji, nofs firxa ta 'nisa mikxufa b'logo u baħar sħiħ ta' headers tal-lingwi u markups kollha. Mhux li dan huwa sett meħtieġ għax-xogħol. Imma ladarba tibda tgħaqqad sistema għalik innifsek, isir diffiċli biex tieqaf. L-unika ħaġa li kkawżatni tħassib kienu s-sewwieqa għall-wi-fi. M'hemm xejn aktar bla sahha, irresponsabbli u korrott milli jibni sewwieqa mis-sors. Imma kont naf li llum jew għada se naqilbu għal dan iż-żibel.

B'mod ġenerali, kif tafu, fiddling ma usb wi-fi fuq Linux huwa bl-uġigħ u kemmxejn bla togħma (bħal Sushi Russu).

Il-kaxxa fiha wkoll CD bis-sewwieqa. Mingħajr ħafna tama nħares lejn dak li hemm fuqu - żgur li ma ħadux ħsiebu. Tfittxija fuq l-Internet wasslitni għall-websajt tal-manifattur, iżda hemm sewwieq Linux hemm biss għar-reviżjoni tal-apparat v4, u fl-armi tiegħi kien v5.21. U barra minn hekk, għal verżjonijiet qodma ħafna tal-qalba 2.6-3.16. Skoraġġut mill-falliment fil-bidu nett, diġà ħsibt li kelli ħadt it-TL-WN727N (huwa ftit aktar għali u jista 'jimmaniġġja 300Mbps kontra 150 għal tiegħi, iżda kif irriżulta, dan ma jimpurtax xejn għall-lampun, dan se jinkiteb aktar tard). Iżda l-iktar ħaġa importanti hija li s-sewwieqa għalih diġà jeżistu u huma sempliċement installati bħala pakkett Firmware-ralink. Normalment tista' tara r-reviżjoni tal-apparat fuq il-korp tal-apparat fuq stiker ħdejn in-numru tas-serje.

Iktar googling u żjarat diversi fora ma ġabux ħafna ġid. Apparentement ħadd qabel lili ma pprova jgħaqqad tali adapter mal-Linux. Hmm, jien xortik tajba daqs raġel għerqu.

Għalkemm, le, qed nigdeb, iż-żjarat ta' forums (l-aktar dawk bil-lingwa Ingliża) taw ukoll il-frott;f'ċerti suġġetti kien hemm referenza għal ċertu Sur lwfinger, li hu famuż għall-kitba ta' numru ta 'sewwieqa għall-adapters Wi-Fi . Ir-repożitorju tal-git tiegħu jinsab fl-aħħar tal-artiklu fil-links. U t-tieni lezzjoni li tgħallimt hija li għandek bżonn tidentifika t-tagħmir tiegħek sabiex tifhem liema sewwieq jista 'jkun adattat għalih.

Parti 1: L-Identità Bourne

Meta l-apparat kien imwaħħal fil-port, ovvjament, l-ebda LED ma jixgħel. U b'mod ġenerali mhu ċar bl-ebda mod jekk xi ħaġa taħdem jew le.

L-ewwelnett, biex issir taf jekk il-kernel jarax it-tagħmir tagħna, inħares f'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

Irriżulta li jara, u huwa saħansitra ċar li hemm ċippa Realtek u l-VID/PID tal-apparat innifsu fuq ix-xarabank tal-usb.

Ejja mmorru aktar u nħarsu lsusb, u hawn falliment ieħor jistenniena

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

Is-sistema ma tafx x'tip ta 'apparat huwa, u b'mod bashfully turi spazju vojt minflok l-isem (għalkemm bejjiegħ=2357 huwa definittivament TP-Link).

F'dan l-istadju, il-qarrej kuriżiv probabbilment diġà nnota xi ħaġa interessanti, iżda se nħalluha sa żmienna.

Ir-riċerka dwar il-problema tal-ismijiet vojta wasslitni għal sit b'identifikaturi, fejn tiddaħħal informazzjoni dwar VID/PID magħrufa. 2357:0111 tagħna ma kienx hemm. Kif irriżulta aktar tard, l-utilità lsusb juża fajl /usr/share/misc/usb.ids, li hija l-istess lista ta' IDs minn dan is-sit. Għas-sbuħija tal-wiri, sempliċement żidt linji għall-bejjiegħ TP-Link fis-sistema tiegħi.

2357  TP-Link
        0111  TL-WN727N v5.21

Ukoll, aħna kkoreġijna l-wiri fil-lista ta 'apparati, iżda ma waslitx pass eqreb lejn l-għażla ta' sewwieq. Biex tagħżel sewwieq, trid tkun taf fuq liema ċippa hija magħmula l-whistle tiegħek. It-tentattivi li jmiss bla suċċess biex issir taf dan fuq l-Internet ma wasslu għal xejn tajjeb. Armat b'tornavit rqiq slotted, jiena nneħħi bir-reqqa l-għatu ta 'l-adapter u l-idea vizzjuża ta' Ziju Liao tidher fl-għwien verġni kollu tagħha. Taħt lenti tista 'tara l-isem taċ-ċippa - RTL8188EUS. Dan diġà huwa tajjeb. Fuq xi forums rajt posts li s-sewwieq minn dak l-istess gentleman lwfinger huwa adattat tajjeb għal din iċ-ċippa (għalkemm jikteb biss dwar RTL8188EU).

Parti 2: Is-Supremazija ta’ Bourne

Niżżel is-sorsi tas-sewwieq minn Git.

Wasal iż-żmien li terġa 'tinstalla l-Windows u tagħmel dak li l-utenti tal-Linux huma normalment assoċjati miegħu - assemblaġġ ta' xi ħaġa minn xi xorta. L-assemblaġġ tas-sewwieqa, kif jirriżulta, huwa ftit differenti mill-kompilazzjoni ta 'programmi:

make
sudo make install

iżda biex niġbru l-moduli tal-kernel għandna bżonn il-fajls tal-header tal-kernel għall-verżjoni speċifika tagħna.

Hemm pakkett fir-repożitorju tal-istokk raspberrypi-kernel-headers, iżda fih il-verżjoni tal-kernel tal-fajls 4.19.66-v7l+, u dan ma jixraqx lilna. Iżda biex tikseb l-intestaturi tal-verżjoni meħtieġa, kif irriżulta, hemm għodda konvenjenti rpi-sors (link fl-aħħar fuq Github), li biha tista' tniżżel l-intestaturi meħtieġa. Aħna nikklonu r-repożitorju, nagħmlu l-iskritt eżekutibbli, u nħaddmu. L-ewwel tnedija tfalli bi żball - m'hemm l-ebda utilità bc. Fortunatament, huwa fir-repożitorju u aħna sempliċement ninstallawh.

sudo apt-get install bc

Wara dan, il-bidu mill-ġdid u t-tniżżil tal-headers (u mbagħad it-twaqqif ta 'xi ħaġa, ma niftakarx issa) jieħu xi żmien u tista' toqgħod lura fis-siġġu tiegħek, il-Windows saret aħjar fil-manifestazzjonijiet kollha tagħha.

Wara li l-headers kollha jkunu ġew imniżżla, iċċekkja li d-direttorju jidher /lib/modules/4.19.73-v7+ u fiha s-simbolu jindika l-post fejn jinsabu l-fajls imniżżla (għalija huwa /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

L-istadju preparatorju tlesta, tista 'tibda l-assemblaġġ. L-assemblaġġ tal-moduli għal darb'oħra jieħu xi żmien, il-Raspberry mhuwiex kruha veloċi (għandu 32bit 900Mhz Cortex ARM v7).
Allura kollox miġbur. Aħna ninstallaw is-sewwieq fit-2 pass (agħmel l-installazzjoni), filwaqt li nikkopjaw ukoll aktar fajls tal-firmware meħtieġa biex is-sewwieq jaħdem:

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

Parti 3. Il-Bourne Ultimatum

Inwaħħal is-suffara fil-port u... ma jiġri xejn. Kien kollox għal xejn?

Nibda nistudja l-fajls ġewwa l-proġett u f’wieħed minnhom insib x’kienet il-problema: is-sewwieq jispeċifika lista sħiħa ta’ identifikaturi VID/PID li jista’ jservi. U sabiex it-tagħmir tagħna jaħdem ma 'dan is-sewwieq, jien sempliċement żidt l-id tiegħi mal-fajl 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 */
};

I kkompilat mill-ġdid is-sewwieq u reġa' installat fuq is-sistema.

U din id-darba kollox beda. Id-dawl fuq l-adapter mixgħul u apparat ġdid deher fil-lista ta 'interfaces tan-netwerk.

Il-wiri ta' interfaces mingħajr fili juri dan li ġej:

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

Bonus għal dawk li jaqraw sal-aħħar

Ftakar kif għedt li ma jimpurtax liema veloċità massima hija ddikjarata fuq l-adapter tiegħek?
Allura, fuq Malinka (qabel ir-rilaxx tal-mudell 4), l-apparati kollha (inkluż l-adapter ethernet) ipoġġu fuq l-istess bus USB. Kbir, hux? U għalhekk il-bandwidth tal-usb bus hija maqsuma bejn l-apparati kollha fuqha. Meta tkejjel il-veloċità kemm permezz tal-ethernet kif ukoll permezz tal-usb wi-fi (konness ma '1 router) kemm bl-ajru kif ukoll bil-wajer, kienet madwar 20Mbit/s.

PS B'mod ġenerali, din il-gwida għall-kompilazzjoni ta 'sewwieq għal dan l-adapter partikolari hija valida mhux biss għal RPI. Imbagħad irrepetiha fuq id-desktop tiegħi bil-Linux Mint - kollox ħadem hemm ukoll. Għandek bżonn biss li tniżżel il-fajls tal-header meħtieġa għall-verżjoni tal-kernel tiegħek bl-istess mod.

UPD. Nies infurmati ssuġġeriti: sabiex ma tiddependix fuq il-verżjoni tal-kernel, għandek bżonn tiġbor u tinstalla sewwieqa bl-użu ta 'dkms. Il-readme għas-sewwieq fih ukoll din l-għażla.

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. Propost garża għall-id tal-apparat ġie aċċettat fil-fergħa mainstream tar-repożitorju lwfinger/rtl8188eu.

referenzi
- RPi USB Wi-Fi Adapters
- Gitbub lwfinger/rtl8188eu
- usb.ids
- rpi-sors

Sors: www.habr.com