Ann fè zanmi RaspberryPi ak TP-Link TL-WN727N

Hey Habr!

Mwen yon fwa deside konekte Franbwaz mwen an sou entènèt la sou lè a.

Pa pi bonè di pase fè, pou objektif sa a mwen te achte yon siflèt usb wi-fi nan konpayi an byen koni TP-Link nan magazen ki pi pre a. Mwen pral di touswit ke sa a se pa yon kalite modil nano usb, men byen yon aparèy gwo, sou gwosè a nan yon kondwi flash regilye (oswa, si ou renmen, gwosè a nan dwèt endèks yon gason adilt). Anvan achte, mwen te fè yon ti rechèch sou lis manifaktirè siflèt sipòte pou RPI ak TP-Link te sou lis la (sepandan, jan li te tounen soti pita, mwen pa t 'pran an kont sibtilite yo, paske dyab la, jan nou konnen. , se nan detay yo). Se konsa, istwa a frèt nan misadventures mwen kòmanse; nou prezante nan atansyon ou yon istwa detektif nan 3 pati. Pou moun ki enterese, tanpri al gade chat.

Atik Konekte adaptè WN727N WiFi a Ubuntu/Mint Li te ede m an pati, men premye bagay yo an premye.

Kondisyon pwoblèm nan

Etandone:

  1. yon sèl tablo òdinatè Franbwaz Pi 2 B v1.1 - 1 moso
  2. usb wi-fi siflèt WN727N - 1 moso
  3. yon pè men pa byen kwochi - 2 moso
  4. Dènye Raspbian enstale kòm eksplwatasyon an (ki baze sou Debian 10 Buster)
  5. Kernel vèsyon 4.19.73-v7+

Jwenn: konekte sou entènèt la (Wi-Fi distribye nan routeur lakay ou)

Apre debalaj adaptè a, mwen li enstriksyon yo andedan:

Sistèm konpatibilite: Windows 10/8/7/XP (menm syèl la, menm XP) ak MacOS 10.9-10.13

Hmm, kòm dabitid, pa yon mo sou Linux. Li te 2k19, epi chofè yo te toujou bezwen rasanble manyèlman ...

Nou te gen avèk nou 2 konpilatè, 75 mil bibliyotèk, senk tach binè, mwatye yon etalaj fanm toutouni ak yon logo ak yon lanmè antye nan tèt tout lang ak mak. Se pa ke sa a se yon seri nesesè pou travay la. Men, yon fwa ou kòmanse rasanble yon sistèm pou tèt ou, li vin difisil pou sispann. Bagay la sèlman ki te lakòz mwen enkyetid se chofè yo pou wi-fi. Pa gen anyen ki pi dekouraje, irèsponsab ak koripsyon pase bati chofè soti nan sous. Men, mwen te konnen ke pi bonè oswa pita nou ta chanje nan fatra sa a.

An jeneral, jan ou konnen, jwe ak usb wi-fi sou Linux se douloure ak yon ti jan san gou (tankou Ris susi).

Bwat la tou gen yon CD ak chofè yo. San yo pa anpil espwa mwen gade nan sa ki sou li - yo definitivman pa te pran swen nan li. Yon rechèch entènèt mennen m 'nan sit entènèt manifakti a, men gen yon chofè Linux la sèlman pou revizyon aparèy v4, ak nan bra m 'te v5.21. Ak san konte, pou vèsyon nwayo trè ansyen 2.6-3.16. Dekouraje pa echèk la nan kòmansman an menm, mwen te deja panse ke mwen ta dwe pran TL-WN727N a (li se yon ti kras pi chè epi li ka okipe 300Mbps kont 150 pou mwen an, men kòm li te tounen soti, sa a pa gen pwoblèm ditou pou Franbwaz la, sa a pral ekri sou pita). Men, bagay ki pi enpòtan an se ke chofè pou li deja egziste epi yo tou senpleman enstale kòm yon pake firmwèr-ralink. Ou ka anjeneral wè revizyon aparèy la sou kò aparèy la sou yon fichye akote nimewo seri a.

Pli lwen google ak vizite divès fowòm pa t 'pote anpil byen. Aparamman pa gen moun anvan m 'te eseye konekte tankou yon adaptè nan Linux. Hmm, mwen gen chans tankou yon nonm ki te nwaye.

Malgre ke, non, mwen bay manti, vizite fowòm (sitou sa yo ki nan lang angle) tou te bay fwi; nan kèk sijè te gen yon mansyone nan yon sèten Mesye lwfinger, ki se pi popilè pou ekri yon kantite chofè pou adaptè Wi-Fi. . Repozitwa git li se nan fen atik la nan lyen yo. Ak dezyèm leson mwen te aprann se ke ou bezwen idantifye aparèy ou an nan lòd yo konprann ki chofè ka apwopriye pou li.

Pati 1: Idantite Bourne

Lè aparèy la te konekte nan pò a, nan kou, pa gen okenn dirije limen. Ak an jeneral li pa klè nan okenn fason si yon bagay ap travay oswa ou pa.

Premye a tout, pou chèche konnen si nwayo a wè aparèy nou an, mwen gade nan 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

Li te tounen soti ke li wè, e li menm klè ke gen yon chip Realtek ak VID / PID nan aparèy la tèt li sou otobis la usb.

Ann ale pi lwen epi gade lsusb, e isit la yon lòt echèk ap tann nou

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

Sistèm nan pa konnen ki kalite aparèy li ye, ak titan montre yon espas vid olye pou yo non an (byenke vandè = 2357 se definitivman TP-Link).

Nan etap sa a, lektè a curieux te pwobableman deja remake yon bagay ki enteresan, men nou pral kite l 'jouk tan nou an.

Rechèch pwoblèm nan non vid te mennen m 'nan yon sit ki gen idantifyan, kote yo te antre enfòmasyon sou VID/PID li te ye. 2357:0111 nou an pa t la. Kòm li te tounen soti pita, sèvis piblik la lsusb sèvi ak dosye /usr/share/misc/usb.ids, ki se menm lis ID yo nan sit sa a. Pou bote ekspozisyon an, mwen tou senpleman te ajoute liy pou machann TP-Link nan sistèm mwen an.

2357  TP-Link
        0111  TL-WN727N v5.21

Oke, nou korije ekspozisyon an nan lis la nan aparèy, men li pa t 'pote nou yon etap pi pre chwazi yon chofè. Pou chwazi yon chofè, ou bezwen konnen sou ki chip siflèt ou a. Pwochen tantativ yo san siksè yo chèche konnen sa a sou entènèt la pa t 'mennen nan anyen bon. Ame ak yon tounvis fen mens, mwen ak anpil atansyon retire bouchon adaptè a ak kreyasyon visye Tonton Liao a parèt nan tout toutouni primitif li yo. Anba yon loup ou ka wè non chip la - RTL8188EUS. Sa deja bon. Sou kèk fowòm mwen te wè pòs ke chofè a nan menm mesye lwfinger la byen adapte pou chip sa a (menm si li sèlman ekri sou RTL8188EU).

Pati 2: Sipremasi Bourne

Mwen telechaje sous chofè yo nan Git.

Li lè pou re-enstale Windows epi fè sa itilizatè Linux yo anjeneral asosye ak - rasanble yon bagay ki soti nan kèk kalite. Asanble chofè yo, jan li sanble, diferan ti kras ak konpile pwogram yo:

make
sudo make install

men pou konpile modil nwayo nou bezwen fichye header nwayo yo pou vèsyon espesifik nou an.

Gen yon pake nan depo a stock raspberrypi-kernel-headers, men li genyen vèsyon nwayo dosye yo 4.19.66-v7l+, e sa pa adapte nou. Men, pou jwenn tèt yo nan vèsyon ki nesesè yo, jan li te tounen soti, gen yon zouti pratik rpi-sous (lyen nan fen a sou Github), ak ki ou ka telechaje tèt ki nesesè yo. Nou klonaj repozitwa a, fè script la ègzekutabl, epi kouri li. Premye lansman an echwe ak yon erè - pa gen okenn sèvis piblik bc. Erezman, li se nan repozitwa a epi nou tou senpleman enstale li.

sudo apt-get install bc

Apre sa, rekòmanse ak telechaje tèt yo (ak Lè sa a, mete kanpe yon bagay, mwen pa sonje kounye a) pran kèk tan epi ou ka chita tounen nan chèz ou a, Windows te vin pi bon nan tout manifestasyon li yo.

Apre yo fin telechaje tout tèt yo, tcheke si anyè a parèt /lib/modules/4.19.73-v7+ epi nan li lyen senbolik la montre kote dosye telechaje yo ye (pou mwen se /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

Etap preparasyon an te fini, ou ka kòmanse asanble. Rasanble modil yo ankò pran kèk tan, Franbwaz la se pa yon bèt vit (li gen yon 32bit 900Mhz Cortex ARM v7).
Se konsa, tout bagay konpile. Nou enstale chofè a nan 2yèm etap la (fè enstale), pandan y ap tou kopye plis fichye firmwèr ki nesesè pou chofè a travay:

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

Pati 3. Iltimatòm nan Bourne

Mwen ploge siflèt la nan pò a epi... anyen pa rive. Èske se te tout pou anyen?

Mwen kòmanse etidye dosye yo andedan pwojè a epi nan youn nan yo mwen jwenn ki pwoblèm nan te: chofè a espesifye yon lis konplè idantifyan VID/PID ke li ka sèvi. Ak nan lòd pou aparèy nou an travay ak chofè sa a, mwen tou senpleman ajoute id mwen an nan dosye a 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 */
};

Mwen recompiled chofè a ak réinstaller li sou sistèm nan.

Ak fwa sa a tout bagay te kòmanse. Limyè sou adaptè a limen ak yon nouvo aparèy parèt nan lis rezo interfaces.

Gade koòdone san fil yo montre bagay sa yo:

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 pou moun ki li jiska lafen

Sonje ki jan mwen te di ke li pa gen pwoblèm ki vitès maksimòm ki endike sou adaptè ou a?
Se konsa, sou Malinka (anvan lage modèl 4 la), tout aparèy (ki gen ladan adaptè Ethernet la) chita sou menm otobis usb la. Gwo, dwa? Se poutèt sa Pleasant otobis usb la divize ant tout aparèy ki sou li. Lè w mezire vitès la tou de atravè ethernet ak via usb wi-fi (konekte ak 1 routeur) tou de pa lè ak pa fil, li te alantou 20Mbit / s.

PS An jeneral, gid sa a pou konpile yon chofè pou adaptè patikilye sa a valab pa sèlman pou RPI. Lè sa a, mwen repete li sou Desktop mwen an ak Linux Mint - tout bagay te travay la tou. Ou jis bezwen telechaje dosye header ki nesesè pou vèsyon nwayo ou a menm jan an.

UPD. Moun ki gen konesans sijere: yo nan lòd yo pa depann sou vèsyon an nwayo, ou bezwen kolekte epi enstale chofè lè l sèvi avèk dkms. Readme pou chofè a gen opsyon sa a tou.

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. Pwopoze patch pou id aparèy yo te aksepte nan branch prensipal la nan repozitwa lwfinger/rtl8188eu.

Referans
- RPi USB Wi-Fi adaptè
- Gitbub lwfinger/rtl8188eu
- usb.ids
- rpi-sous

Sous: www.habr.com