Ayo dadi kanca RaspberryPi karo TP-Link TL-WN727N

Hey Habr!

Aku tau mutusake kanggo nyambungake raspberry menyang Internet liwat udhara.

Ora let suwe, kanggo maksud iki aku tuku singsot usb wi-fi saka perusahaan sing kondhang TP-Link saka toko sing paling cedhak. Aku bakal ngomong langsung sing iki ora sawetara jenis modul usb nano, nanging cukup piranti gedhe, bab ukuran flash drive biasa (utawa, yen seneng, ukuran driji indeks wong diwasa). Sadurunge tuku, aku nindakake riset sethithik babagan dhaptar produsen singsot sing didhukung kanggo RPI lan TP-Link ana ing dhaptar (Nanging, kaya sing kedadeyan mengko, aku ora nganggep subtleties, amarga setan, kaya sing kita kenal. , ana ing rincian). Dadi, crita kadhemen saka misadventuresku diwiwiti; kita menehi perhatian marang crita detektif ing 3 bagean. Kanggo sing kasengsem, mangga deleng kucing.

Artikel Nyambungake adaptor WiFi WN727N menyang Ubuntu / Mint Iku mbantu kula sebagian, nanging pisanan iku pisanan.

Kondisi masalah

Given:

  1. komputer papan siji Raspberry Pi 2 B v1.1 - 1 Piece
  2. usb wi-fi wisel WN727N - 1 Piece
  3. sepasang tangan ora cukup bengkong - 2 potong
  4. Raspbian paling anyar diinstal minangka OS (adhedhasar Debian 10 Buster)
  5. versi kernel 4.19.73-v7+

Golek: nyambung menyang Internet (Wi-Fi disebarake saka dalan ngarep)

Sawise mbukak adaptor, aku maca pandhuan ing njero:

Kompatibilitas Sistem: Windows 10/8/7/XP (malah langit, malah XP) lan MacOS 10.9-10.13

Hmm, kaya biasane, ora ana tembung babagan Linux. Iku 2k19, lan pembalap isih kudu dirakit kanthi manual ...

Kita duwe 2 kompiler, 75 ewu perpustakaan, limang gumpalan binar, setengah saka pirang-pirang wanita telanjang kanthi logo lan kabeh header kabeh basa lan markup. Ora iki pesawat perlu kanggo proyek. Nanging yen sampeyan miwiti ngrakit sistem kanggo dhewe, dadi angel kanggo mungkasi. Siji-sijine sing nyebabake aku prihatin yaiku driver kanggo wi-fi. Ora ana sing ora duwe daya, ora tanggung jawab lan korupsi tinimbang mbangun driver saka sumber. Nanging aku ngerti yen cepet utawa mengko kita bakal pindhah menyang sampah iki.

UmumΓ©, kaya sing sampeyan ngerti, ngutak-atik usb wi-fi ing Linux yaiku nglarani lan rada hambar (kaya sushi Rusia).

Kothak kasebut uga ngemot CD kanthi driver. Tanpa pangarep-arep, aku ndeleng apa sing ana ing kono - mesthine ora ngurus. Panelusuran Internet nggawa aku menyang situs web pabrikan, nanging ana driver Linux mung kanggo revisi piranti v4, lan ing tanganku ana v5.21. Kajaba iku, kanggo versi kernel lawas banget 2.6-3.16. Pundung amarga kegagalan ing wiwitan, aku wis mikir yen aku kudu njupuk TL-WN727N (iku luwih larang lan bisa nangani 300Mbps mungsuh 150 kanggo mine, nanging ternyata, iki ora masalah. kanggo raspberry, iki bakal ditulis mengko). Nanging sing paling penting yaiku driver kasebut wis ana lan mung diinstal minangka paket firmware-ralink. Biasane sampeyan bisa ndeleng revisi piranti ing awak piranti ing stiker ing jejere nomer seri.

Googling lan ngunjungi macem-macem forum ora nggawa akeh sing apik. Ketoke ora ana sing sadurunge aku nyoba nyambungake adaptor kasebut menyang Linux. Hmm, untunge aku kaya wong klelep.

Sanajan, ora, aku ngapusi, ngunjungi forum (biasane sing nganggo basa Inggris) uga ngasilake woh, ing sawetara topik ana sing nyebutake Pak lwfinger tartamtu, sing misuwur amarga nulis sawetara driver kanggo adaptor Wi-Fi. . Repositori git ana ing pungkasan artikel ing tautan. Lan pawulangan kapindho sing daksinaoni yaiku sampeyan kudu ngenali piranti sampeyan supaya ngerti driver endi sing cocog.

Bagean 1: Identitas Bourne

Nalika piranti wis kepasang menyang port, mesthi, ora LED murup. Lan umume ora jelas manawa ana sing bisa digunakake utawa ora.

Kaping pisanan, kanggo ngerteni apa kernel ndeleng piranti kita, aku katon ing 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

Iku nguripake metu sing ndeleng, lan iku malah cetha sing ana chip Realtek lan VID / PID piranti dhewe ing bis usb.

Ayo dadi luwih lan katon lsusb, lan ing kene ana kegagalan liyane sing nunggu kita

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

Sistem ora ngerti apa jenis piranti, lan bashfully nuduhake papan kosong tinimbang jeneng (sanajan vendor = 2357 mesthi TP-Link).

Ing tahap iki, pamaca sing kepengin weruh bisa uga wis ngeweruhi sing menarik, nanging kita bakal ninggalake nganti saiki.

Riset masalah jeneng kosong mimpin kula menyang situs karo pengenal, ngendi informasi ing dikenal VID / PID wis ngetik. 2357:0111 kita ora ana. Minangka dadi metu mengko, sarana lsusb nggunakake file /usr/share/misc/usb.ids, yaiku dhaptar ID sing padha saka situs iki. Kanggo kaendahan tampilan, aku mung nambah garis kanggo vendor TP-Link ing sistemku.

2357  TP-Link
        0111  TL-WN727N v5.21

Inggih, kita mbenerake tampilan ing dhaptar piranti, nanging iki ora nggawa kita siji langkah nyedhaki milih driver. Kanggo milih driver, sampeyan kudu ngerti apa chip singsot digawe. Upaya gagal sabanjure kanggo ngerteni iki ing Internet ora nyebabake apa-apa sing apik. Bersenjata karo screwdriver slotted lancip, Aku kasebut kanthi teliti, pry mati tutup adaptor lan brainchild ganas Pakdhe Liao katon ing kabeh wuda murni. Ing kaca pembesar sampeyan bisa ndeleng jeneng chip - RTL8188EUS. Iki wis apik. Ing sawetara forum aku weruh kiriman sing driver saka wong lanang padha lwfinger uga cocog kanggo chip iki (sanajan mung nulis babagan RTL8188EU).

Bagean 2: Supremasi Bourne

Aku ndownload sumber driver saka Git.

Wektu kanggo nginstal maneh Windows lan nindakake apa sing biasane digandhengake karo pangguna Linux - ngrakit soko saka sawetara jinis. Nglumpukake driver, kayane, ora beda karo program kompilasi:

make
sudo make install

nanging kanggo ngumpulake modul kernel kita butuh file header kernel kanggo versi spesifik kita.

Ana paket ing gudang saham raspberrypi-kernel-headers, nanging ngemot versi kernel file 4.19.66-v7l+, lan sing ora cocog karo kita. Nanging kanggo entuk header saka versi sing dibutuhake, ternyata, ana alat sing trep rpi-sumber (pranala ing pungkasan ing Github), sampeyan bisa ndownload header sing dibutuhake. Kita kloning repositori, nggawe skrip bisa dieksekusi, lan mbukak. Peluncuran pisanan gagal kanthi kesalahan - ora ana sarana bc. Untunge, ana ing repositori lan kita mung nginstal.

sudo apt-get install bc

Sawise iki, miwiti maneh lan ngundhuh header (lan banjur nyetel soko, aku ora ngelingi saiki) njupuk sawetara wektu lan sampeyan bisa njagong maneh ing kursi, Windows wis dadi luwih apik ing kabeh kawujudan.

Sawise kabeh header wis diundhuh, priksa manawa direktori kasebut katon /lib/modules/4.19.73-v7+ lan ing symlink kasebut nuduhake lokasi file sing diunduh (kanggo aku yaiku /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 wis rampung, sampeyan bisa miwiti perakitan. Nglumpukake modul maneh njupuk sawetara wektu, Raspberry ora kewan cepet (wis 32bit 900Mhz Cortex ARM v7).
Dadi kabeh dikompilasi. Kita nginstal driver ing langkah kaping 2 (nginstal), nalika uga nyalin file firmware liyane sing dibutuhake supaya driver bisa digunakake:

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

Aku plug singsot menyang port lan ... boten mengkono. Apa iku kabeh kanggo apa-apa?

Aku miwiti sinau file nang project lan ing salah siji saka wong-wong mau aku nemokake apa masalah: driver nemtokake dhaftar lengkap VID / pengenal PID sing bisa ngawula. Lan supaya piranti bisa digunakake karo driver iki, aku mung nambah id menyang file kasebut 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 */
};

Aku recompiled driver lan diinstal maneh ing sistem.

Lan wektu iki kabeh diwiwiti. Lampu ing adaptor murup lan piranti anyar katon ing dhaptar antarmuka jaringan.

Ndeleng antarmuka nirkabel nuduhake ing ngisor iki:

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 kanggo sing maca nganti pungkasan

Elinga carane aku ngandika sing ora Matter apa kacepetan maksimum nyatakake ing adaptor Panjenengan?
Dadi, ing Malinka (sadurunge release model 4), kabeh piranti (kalebu adaptor ethernet) njagong ing bus usb padha. Apik, bener? Lan mulane bandwidth saka bis usb dipΓ©rang antarane kabeh piranti ing. Nalika ngukur kacepetan liwat ethernet lan liwat usb wi-fi (disambungake menyang 1 router) loro liwat udhara lan kabel, iku watara 20Mbit / s.

PS UmumΓ©, pandhuan iki kanggo ngumpulake driver kanggo adaptor tartamtu iki bener ora mung kanggo RPI. Aku banjur mbaleni ing desktop nganggo Linux Mint - kabeh uga bisa digunakake ing kana. Sampeyan mung kudu ndownload file header sing dibutuhake kanggo versi kernel kanthi cara sing padha.

UPD. Wong sing ngerti nyaranake: supaya ora gumantung ing versi kernel, sampeyan kudu ngumpulake lan nginstal driver nggunakake dkms. Readme kanggo driver uga ngemot pilihan iki.

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. Diusulake tambalan kanggo id piranti ditampa menyang cabang utama saka gudang lwfinger / rtl8188eu.

referensi
- RPi USB Wi-Fi Adapter
- Gitbub lwfinger/rtl8188eu
- usb.id
- rpi-sumber

Source: www.habr.com