Hayu urang ngadamel babaturan RaspberryPi sareng TP-Link TL-WN727N

Héy Habr!

Kuring sakali mutuskeun pikeun nyambungkeun buah prambus ka Internet ngaliwatan hawa.

Teu lami saurna, pikeun tujuan ieu kuring ngagaleuh kacapi usb wi-fi ti perusahaan anu terkenal TP-Link ti toko pangcaketna. Kuring bakal langsung nyarios yén ieu sanés sababaraha jinis modul usb nano, tapi alat anu ageung, ngeunaan ukuran flash drive biasa (atanapi, upami anjeun resep, ukuran ramo indéks lalaki dewasa). Sateuacan ngagaleuh, kuring ngalakukeun panalungtikan sakedik dina daptar pabrik kacapi anu dirojong pikeun RPI sareng TP-Link aya dina daptar (tapi, tétéla engké, kuring henteu nganggap subtleties, sabab Iblis, sakumaha anu urang terang. , aya dina detil). Janten, dongéng tiis tina kasangsaraan kuring dimimitian; kami nampilkeun ka perhatian anjeun carita detektif dina 3 bagian. Pikeun anu minat, mangga tingal ucing.

artikel Nyambungkeun adaptor WiFi WN727N ka Ubuntu / Mint Eta mantuan kuring sabagean, tapi hal kahiji munggaran.

Kaayaan masalah

dibikeun:

  1. komputer dewan tunggal buah prambus Pi 2 B v1.1 - 1 potongan
  2. usb wi-fi suling WN727N - 1 sapotong
  3. sapasang leungeun teu rada bengkung - 2 lembar
  4. Raspbian panganyarna dipasang salaku OS (dumasar kana Debian 10 Buster)
  5. Vérsi kernel 4.19.73-v7+

Pilarian: sambungkeun ka Internét (Wi-Fi disebarkeun tina router asal anjeun)

Saatos ngabongkar adaptor, kuring maca paréntah di jero:

Kasaluyuan Sistim: Windows 10/8/7/XP (sanajan langit, komo XP) jeung MacOS 10.9-10.13

Hmm, sapertos biasa, sanés kecap ngeunaan Linux. Éta 2k19, sareng supir masih kedah dirakit sacara manual ...

Kami ngagaduhan 2 kompiler, 75 rébu perpustakaan, lima gumpalan binér, satengah asép Sunandar Sunarya awéwé taranjang kalayan logo sareng sajumlah ageung header sadaya basa sareng markup. Henteu yén ieu mangrupikeun set anu diperyogikeun pikeun padamelan éta. Tapi sakali anjeun ngamimitian assembling sistem pikeun diri, janten hese eureun. Hiji-hijina hal anu nyababkeun kuring prihatin nyaéta supir Wi-Fi. Teu aya anu langkung teu daya teu upaya, teu tanggung jawab sareng korup tibatan ngawangun supir ti sumberna. Tapi kuring terang yén engké atanapi engké urang bakal ngalih ka sampah ieu.

Sacara umum, sakumaha anu anjeun terang, ngulik usb wi-fi dina Linux nyaéta nyeri jeung rada hambar (sapertos sushi Rusia).

Kotak ogé ngandung CD sareng supir. Tanpa seueur harepan kuring ningali naon anu aya dina éta - aranjeunna pasti henteu ngurus éta. Pilarian Internét dibawa kuring ka halaman wéb produsén, tapi aya supir Linux ngan ukur pikeun révisi alat v4, sarta dina leungeun kuring éta v5.21. Sajaba ti éta, pikeun versi kernel heubeul pisan 2.6-3.16. Pundung ku kagagalan di awal, kuring parantos ngira yén kuring kedah nyandak TL-WN727N (saeutik langkung mahal sareng tiasa ngadamel 300Mbps versus 150 pikeun kuring, tapi tétéla, ieu henteu masalah pisan. pikeun buah prambus, ieu bakal ditulis ngeunaan engké). Tapi anu paling penting nyaéta yén panggerak pikeun éta parantos aya sareng ngan saukur dipasang salaku pakét firmware-ralink. Anjeun biasana tiasa ningali révisi alat dina awak alat dina stiker gigireun nomer séri.

Googling salajengna jeung ngadatangan rupa panglawungan teu mawa loba alus. Tétéla teu saurang ogé saméméh kuring geus nyoba nyambungkeun adaptor misalna ka Linux. Hmm, untungna mah siga jelema nu tilelep.

Sanaos, henteu, kuring bohong, nganjang ka forum (kalobaannana dina basa Inggris) ogé ngahasilkeun buah; dina sababaraha topik aya nyebatkeun sababaraha Mr. lwfinger, anu kasohor nyerat sababaraha driver pikeun adaptor Wi-Fi. . Repository git na aya dina tungtung tulisan dina tautan. Sareng palajaran kadua anu kuring diajar nyaéta anjeun kedah ngidentipikasi alat anjeun pikeun ngartos supir mana anu cocog pikeun éta.

Bagian 1: The Bourne Identity

Nalika alat kasebut dipasang kana port, tangtosna, henteu aya LED anu hurung. Sarta sacara umum teu jelas dina sagala cara naha hal jalan atanapi henteu.

Anu mimiti, pikeun milarian naha kernel ningali alat kami, kuring ningali dina 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

Tétéla éta nilik, komo jelas yén aya chip Realtek na VID / PID alat sorangan dina beus USB.

Hayu urang leuwih jauh jeung kasampak lsusb, sareng di dieu aya kagagalan anu ngantosan urang

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

Sistim nu teu nyaho jenis alat éta, sarta bashfully nembongkeun spasi kosong tinimbang ngaran (sanajan vendor = 2357 pasti TP-Link).

Dina tahap ieu, pamaca hayang weruh meureun geus noticed hal metot, tapi urang bakal ninggalkeun eta nepi ka waktu urang.

Nalungtik masalah ngaran kosong ngarah kuring ka loka kalawan identifiers, dimana informasi dina dipikawanoh VID / PID diasupkeun. 2357:0111 kami teu aya. Salaku tétéla engké, utiliti lsusb ngagunakeun file /usr/share/misc/usb.ids, nu mangrupa daptar sarua ID ti situs ieu. Pikeun kaéndahan tampilan, kuring ngan ukur nambihan garis pikeun vendor TP-Link dina sistem kuring.

2357  TP-Link
        0111  TL-WN727N v5.21

Nya, kami ngabenerkeun tampilan dina daptar alat, tapi éta henteu ngajantenkeun urang langkung caket kana milih supir. Pikeun milih supir, anjeun kedah terang naon chip kacapi anjeun damel. Usaha gagal salajengna pikeun manggihan ieu dina Internet teu ngakibatkeun nanaon alus. Bersenjata ku obeng slotted ipis, Kuring taliti pry off cap adaptor jeung gagasan ganas Paman Liao urang mucunghul dina sakabéh buligir pristine na. Dina kaca pembesar anjeun tiasa ningali nami chip - RTL8188EUS. Ieu geus alus. Dina sababaraha panglawungan kuring nempo tulisan yén supir ti éta gentleman sarua lwfinger ogé cocog pikeun chip ieu (sanajan anjeunna ukur nyerat ngeunaan RTL8188EU).

Bagian 2: The Bourne Supremasi

Kuring ngundeur sumber supir ti Git.

Waktosna pikeun masang deui Windows sareng ngalakukeun naon anu biasana dikaitkeun ku pangguna Linux - ngarakit sababaraha jinis. Assembling drivers, sakumaha tétéla, béda saeutik ti compiling program:

make
sudo make install

tapi pikeun kompilasi modul kernel urang peryogi file lulugu kernel pikeun versi husus urang.

Aya pakét dina gudang saham raspberrypi-kernel-headers, tapi ngandung versi kernel tina file 4.19.66-v7l+, sareng éta henteu cocog sareng urang. Tapi pikeun meunangkeun headers tina versi diperlukeun, sakumaha tétéla, aya alat merenah rpi-sumber (link di tungtung on Github), kalawan nu Anjeun bisa ngundeur headers perlu. Urang clone gudang, nyieun skrip laksana, sarta ngajalankeun eta. Peluncuran munggaran gagal sareng kasalahan - teu aya utilitas bc. Untungna, éta aya dina gudang sareng urang pasang.

sudo apt-get install bc

Saatos ieu, balikan deui sareng unduh header (teras nyetél hiji hal, kuring henteu émut ayeuna) peryogi sababaraha waktos sareng anjeun tiasa calik dina korsi anjeun, Windows parantos langkung saé dina sagala manifestasi na.

Sanggeus kabéh lulugu geus diundeur, pariksa yen diréktori nembongan /lib/modules/4.19.73-v7+ sareng di dinya symlink nunjuk ka tempat dimana file anu diunduh (pikeun kuring éta /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

Tahap persiapan parantos réngsé, anjeun tiasa ngamimitian ngarakit. Assembling modul deui butuh sababaraha waktu, buah prambus teu sato galak gancang (mibanda 32bit 900Mhz Cortex ARM v7).
Jadi sagalana disusun. Kami masang supir dina léngkah ka-2 (ngadamel pasang), bari ogé nyalin langkung seueur file firmware anu dipikabutuh pikeun supir tiasa jalan:

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

Bagian 3. The Bourne Ultimatum

Kuring nyolok kacapi kana port jeung ... euweuh kajadian. Éta sadayana pikeun nanaon?

Kuring mimiti diajar file di jero proyék jeung di salah sahijina kuring manggihan naon masalahna: supir nangtukeun daptar lengkep VID / PID identifiers nu bisa ngawula. Sareng supados alat urang tiasa dianggo sareng supir ieu, kuring ngan ukur nambihan id kuring kana file 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 */
};

Kuring recompiled supir jeung reinstalled eta dina sistem.

Sareng waktos ieu sadayana dimimitian. Lampu adaptor hurung sareng alat anyar muncul dina daptar antarmuka jaringan.

Ningali antarmuka nirkabel nunjukkeun ieu:

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 pikeun jalma anu maca nepi ka ahir

Inget kumaha kuring ngomong yén henteu masalah naon speed maksimum dinyatakeun dina adaptor Anjeun?
Janten, dina Malinka (saméméh sékrési modél 4), sadaya alat (kaasup adaptor Ethernet) linggih dina beus USB anu sami. Hebat, leres? Ku alatan éta, rubakpita tina beus USB dibagi antara sadaya alat dina eta. Nalika ngukur laju boh via ethernet sareng via usb wi-fi (nyambung ka 1 router) boh ku hawa sareng kawat, éta sakitar 20Mbit / s.

PS Sacara umum, pituduh ieu pikeun kompilasi supir kanggo adaptor khusus ieu sah henteu ngan ukur pikeun RPI. Kuring teras ngulang deui dina desktop kuring sareng Linux Mint - sadayana ogé damel di dinya. Anjeun ngan kedah ngaunduh file lulugu anu dipikabutuh pikeun versi kernel anjeun ku cara anu sami.

UPD. Jalma anu terang nyarankeun: supados henteu gumantung kana versi kernel, anjeun kedah ngumpulkeun sareng masang supir nganggo dkms. Readme pikeun supir ogé ngandung pilihan ieu.

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. Diajukeun tambalan pikeun alat id ieu katampa kana cabang mainstream of lwfinger / rtl8188eu Repository.

rujukan
- RPi USB Wi-Fi adaptor
- Gitbub lwfinger/rtl8188eu
- usb.id
- rpi-sumber

sumber: www.habr.com