Egin dezagun lagun RaspberryPi TP-Link TL-WN727N-rekin

Aupa Habr!

Behin nire mugurdia Internetera konektatzea erabaki nuen.

Esan baino lehen, horretarako TP-Link enpresa ezagunari usb wi-fi txistu bat erosi nuen gertuen dagoen dendatik. Berehala esango dut hau ez dela nano usb modulu bat, gailu handi samarra baizik, flash drive arrunt baten tamainakoa (edo, nahi baduzu, gizon heldu baten hatz erakuslearen tamainakoa). Erosi aurretik, ikerketa txiki bat egin nuen RPIrako txistu-fabrikatzaile onartzen direnen zerrendan eta TP-Link zerrendan zegoen (hala ere, geroago gertatu zen bezala, ez nituen kontutan txukuntasunak, deabrua, dakigunez , xehetasunetan dago). Beraz, nire ezbeharren istorio hotza hasten da; detektibe istorio bat aurkezten dizuegu 3 ataletan. Interesa dutenek, mesedez, jo cat.

artikulu WN727N WiFi egokitzailea Ubuntu/Mint-era konektatzen Neurri batean lagundu zidan, baina lehenik eta behin.

Arazoaren baldintzak

Emana:

  1. Taula bakarreko ordenagailua Raspberry Pi 2 B v1.1 - 1 pieza
  2. usb wi-fi txistua WN727N - 1 pieza
  3. Nahiko okertu gabeko esku pare bat - 2 pieza
  4. Azken Raspbian sistema eragile gisa instalatuta dago (Debian 10 Buster-en oinarrituta)
  5. nukleoaren 4.19.73-v7+ bertsioa

Bilatu: konektatu Internetera (Wi-Fi etxeko bideratzailetik banatzen da)

Egokitzailea deskonprimitu ondoren, barruko argibideak irakurri ditut:

Sistemaren bateragarritasuna: Windows 10/8/7/XP (baita zerua ere, baita XP ere) eta MacOS 10.9-10.13

Hmm, ohi bezala, Linux-i buruz hitzik ez. 2k19 zen, eta gidariak oraindik eskuz muntatu behar ziren...

Gurekin 2 konpilatzaile, 75 mila liburutegi, bost blob bitar, logotipo batekin emakume biluzik sorta erdi bat eta hizkuntza eta marka guztietako goiburuen itsaso osoa izan genuen. Ez da hori lanerako beharrezko multzoa denik. Baina behin sistema bat muntatzen hasten zarenean, zaila egiten da gelditzea. Kezka sortu zidan bakarra wi-fiaren gidariak izan ziren. Ez dago ezer babesgabeago, arduragabeago eta ustelagorik gidariak iturritik eraikitzea baino. Baina banekien lehenago edo beranduago zabor honetara pasatuko ginela.

Orokorrean, dakizuenez, Linuxen usb wi-fiarekin jolastea da mingarria eta zapore samarra (Errusiar sushi bezala).

Kutxak gidariekin CD bat ere badu. Itxaropen handirik gabe ikusten dut gainean dagoenari - zalantzarik gabe ez dute horretaz arduratu. Interneteko bilaketa batek fabrikatzailearen webgunera eraman ninduen, baina Linux kontrolatzaile bat dago han gailua berrikusteko soilik v4, eta nire besoetan zegoen v5.21. Eta gainera, kernel oso zaharren bertsioetarako 2.6-3.16. Hasiera-hasieran hutsegiteagatik gomendatuta, dagoeneko pentsatu nuen TL-WN727N hartu beharko nuela (apur bat garestiagoa da eta 300 Mbps-ak kudeatu ditzake nirea 150 baino gehiago, baina ondorioztatu denez, honek ez du batere axola mugurdiarentzat, hau geroago idatziko da). Baina garrantzitsuena da horretarako kontrolatzaileak dagoeneko existitzen direla eta pakete gisa instalatzen direla firmware-ralink. Normalean gailuaren berrikuspena serie-zenbakiaren ondoan dagoen eranskailu batean ikus dezakezu gailuaren gorputzean.

Google-k gehiago egiteak eta hainbat foro bisitatzeak ez zuen onik ekarri. Antza denez, nire aurretik ez da horrelako egokitzaile bat Linuxera konektatzen saiatu. Hmm, itotako gizon bat bezain zortea dut.

Nahiz eta, ez, gezurretan nago, foroak bisitatzeak (gehienetan ingelesezkoak) ere fruituak eman zituen; gai batzuetan lwfinger jaun jakin baten aipamena zegoen, Wi-Fi egokitzaileentzako hainbat driver idazteagatik famatua dena. . Bere git biltegia esteketako artikuluaren amaieran dago. Eta ikasi dudan bigarren ikasgaia da zure gailua identifikatu behar duzula zein kontrolatzaile egokia izan daitekeen ulertzeko.

1. zatia: Bourne identitatea

Gailua atakara konektatu zenean, noski, ez zen LEDrik piztu. Eta, oro har, ez dago inola ere argi zerbaitek funtzionatzen duen ala ez.

Lehenik eta behin, nukleoak gure gailua ikusten duen jakiteko, dmesg-en begiratu dut:

[  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

Agertu zen ikusten duela, eta are argi dago Realtek txipa eta gailuaren beraren VID/PID usb busean daudela.

Goazen harago eta begiratu lsusb, eta hemen beste porrot bat itxaroten digu

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

Sistemak ez daki zer gailu mota den, eta hutsune bat erakusten du izenaren ordez (saltzailea=2357 zalantzarik gabe TP-Link den arren).

Etapa honetan, irakurle jakintsuak ziurrenik zerbait interesgarria nabaritu du, baina gure garairako utziko dugu.

Izen hutsen arazoa ikertzeak identifikatzaileak dituen gune batera eraman ninduen, non VID/PID ezagunari buruzko informazioa sartzen den. Gure 2357:0111 ez zegoen. Geroago agertu zenez, erabilgarritasuna lsusb fitxategia erabiltzen du /usr/share/misc/usb.ids, hau da, gune honetako IDen zerrenda bera. Pantailaren edertasunagatik, nire sisteman TP-Link saltzailerako lerroak gehitu ditut.

2357  TP-Link
        0111  TL-WN727N v5.21

Tira, gailuen zerrendan bistaratzea zuzendu dugu, baina ez gaitu pauso bat gehiago hurbildu gidari bat aukeratzera. Gidari bat hautatzeko, zure txistua zein txip gainean dagoen jakin behar duzu. Interneten hori jakiteko arrakastarik gabeko hurrengo saiakerek ez zuten ezer onik ekarri. Bihurkin zirrikitu mehe batekin armatuta, moldagailuaren txanoa kontu handiz kentzen dut eta osaba Liaoren burutazio zitala bere biluztasun erabatekoan agertzen da. Lupa baten azpian txiparen izena ikus dezakezu - RTL8188EUS. Hau dagoeneko ona da. Foro batzuetan mezuak ikusi nituen, jaun lwfinger bereko gidaria txip honetarako egokia dela (nahiz eta RTL8188EU-ri buruz bakarrik idazten duen).

2. zatia: Bourne-ren nagusitasuna

Git-etik deskargatzen ditut gidarien iturriak.

Windows berriro instalatzeko eta Linux erabiltzaileek normalean lotzen dutena egiteko garaia da - mota batzuetako zerbait muntatzea. Gidariak muntatzea, antza denez, gutxi desberdina da programak konpilatzearekin:

make
sudo make install

baina nukleoaren moduluak konpilatzeko nukleoaren goiburuko fitxategiak behar ditugu gure bertsio espezifikorako.

Pakete bat dago stock biltegian raspberrypi-kernel-headers, baina fitxategien nukleoaren bertsioa dauka 4.19.66-v7l+, eta hori ez zaigu egokitzen. Baina beharrezko bertsioaren goiburuak lortzeko, ondorioztatu denez, tresna eroso bat dago rpi-iturria (bukaeran Github-en esteka), eta horrekin beharrezko goiburuak deskargatu ditzakezu. Biltegia klonatzen dugu, script-a exekutagarria egiten dugu eta exekutatzen dugu. Lehenengo abiarazteak errore batekin huts egiten du - ez dago erabilgarritasunik bc. Zorionez, biltegian dago eta instalatu besterik ez dugu egiten.

sudo apt-get install bc

Horren ondoren, goiburuak berrabiarazi eta deskargatzeak (eta gero zerbait konfiguratzea, orain ez naiz gogoratzen) denbora pixka bat behar du eta zure aulkian eseri zaitezke, Windows hobetu egin da bere adierazpen guztietan.

Goiburu guztiak deskargatu ondoren, egiaztatu direktorioa agertzen dela /lib/modules/4.19.73-v7+ eta bertan esteka sinbolikoak deskargatutako fitxategiak dauden tokira seinalatzen du (niretzat /home/pi/linux da):

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

Prestaketa fasea amaitu da, muntatzen has zaitezke. Moduluak berriro muntatzeak denbora pixka bat behar du, Raspberry ez da piztia azkarra (32bit 900Mhz Cortex ARM v7 du).
Beraz, dena bilduta. Kontrolatzailea 2. urratsean instalatzen dugu (instalatu), kontrolatzaileak funtziona dezan beharrezkoak diren firmware fitxategi gehiago kopiatzen ditugun bitartean:

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

3. zatia. Bourne ultimatum-a

Txistua portuan sartzen dut eta... ez da ezer gertatzen. Dena ez al zen ezertarako?

Proiektuaren barruan dauden fitxategiak aztertzen hasten naiz eta horietako batean arazoa zein zen aurkitzen dut: gidariak balio dezakeen VID/PID identifikatzaileen zerrenda osoa zehazten du. Eta gure gailuak kontrolatzaile honekin funtziona dezan, nire id-a gehitu dut fitxategian 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 */
};

Kontrolatzailea berriro konpilatu eta sisteman berriro instalatu nuen.

Eta oraingoan dena hasi zen. Egokigailuaren argia piztu zen eta sareko interfazeen zerrendan gailu berri bat agertu zen.

Hari gabeko interfazeak ikusteak honako hau erakusten du:

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

Hobaria amaiera arte irakurtzen dutenentzat

Gogoratzen al duzu nola esan nuen ez duela axola zein abiadura maximoa adierazten den zure egokigailuan?
Beraz, Malinkan (4 eredua kaleratu baino lehen), gailu guztiak (ethernet egokitzailea barne) USB bus berean daude. Bikaina, ezta? Eta, beraz, usb busaren banda zabalera bertan dauden gailu guztien artean banatzen da. Abiadura bai ethernet bidez bai usb wi-fi bidez (bideratzaile batera konektatuta) bai airez bai hari bidez neurtzean, 1Mbit/s ingurukoa zen.

PS Oro har, egokitzaile jakin honetarako kontrolatzaile bat konpilatzeko gida honek RPIrako ez du balio. Gero, nire mahaigainean errepikatu nuen Linux Mint-ekin - dena ere funtzionatu zuen han. Zure nukleoaren bertsiorako beharrezko goiburuko fitxategiak modu berean deskargatu besterik ez duzu behar.

UPD. Jende jakitunak iradokitzen du: nukleoaren bertsioaren mende ez egoteko, dkms erabiliz kontrolatzaileak bildu eta instalatu behar dituzu. Gidarirako readme-ek ere aukera hau dauka.

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. Proposatua adabaki gailuaren id-a lwfinger/rtl8188eu biltegiaren adar nagusian onartu zen.

Erreferentziak
- RPi USB Wi-Fi egokigailuak
- Gitbub lwfinger/rtl8188eu
- usb.ids
- rpi-iturria

Iturria: www.habr.com