Makighigala ta sa RaspberryPi sa TP-Link TL-WN727N

Hoy Habr!

Kausa nakahukom ko nga ikonektar ang akong raspberry sa Internet pinaagi sa hangin.

Sa wala pa gisulti kaysa nahuman, alang niini nga katuyoan nagpalit ako usa ka usb wi-fi whistle gikan sa bantog nga kompanya nga TP-Link gikan sa labing duol nga tindahan. Isulti ko dayon nga kini dili usa ka matang sa nano usb module, apan usa ka dako nga aparato, sama sa gidak-on sa usa ka regular nga flash drive (o, kung gusto nimo, ang gidak-on sa tudlo sa tudlo sa hamtong nga lalaki). Sa wala pa mopalit, naghimo ako usa ka gamay nga panukiduki bahin sa lista sa gisuportahan nga mga taghimo sa whistle alang sa RPI ug TP-Link naa sa lista (bisan pa, ingon sa ulahi, wala nako gikonsiderar ang mga subtleties, tungod kay ang yawa, ingon sa nahibal-an namon. , naa sa mga detalye). Mao nga, nagsugod ang bugnaw nga istorya sa akong mga misadventures; among gipresentar sa imong atensyon ang usa ka istorya sa detektib sa 3 ka bahin. Sa mga interesado, palihog tan-awa ang iring.

Artikulo Pagkonektar sa WN727N WiFi adapter sa Ubuntu/Mint Nakatabang kini kanako sa bahin, apan una sa tanan.

Kondisyon sa problema

Gihatag:

  1. single board computer Raspberry Pi 2 B v1.1 - 1 ka piraso
  2. usb wi-fi whistle WN727N - 1 ka piraso
  3. usa ka parisan sa dili kaayo hiwi nga mga kamot - 2 ka piraso
  4. Ang pinakabag-o nga Raspbian gi-install isip OS (base sa Debian 10 Buster)
  5. kernel nga bersyon 4.19.73-v7+

Pangitaa: pagkonektar sa Internet (Ang Wi-Fi giapod-apod gikan sa imong router sa balay)

Human ma-unpack ang adapter, akong gibasa ang mga instruksyon sa sulod:

System Compatibility: Windows 10/8/7/XP (bisan ang langit, bisan XP) ug MacOS 10.9-10.13

Hmm, sama sa naandan, dili usa ka pulong bahin sa Linux. Kadto mao ang 2k19, ug ang mga drayber kinahanglan pa nga i-assemble sa mano-mano ...

Kauban namo ang 2 ka compiler, 75 ka libo nga mga librarya, lima ka binary blobs, tunga sa han-ay sa hubo nga mga babaye nga adunay logo ug tibuok dagat sa mga ulohan sa tanang pinulongan ug mga markup. Dili nga kini usa ka kinahanglanon nga set alang sa trabaho. Apan sa higayon nga magsugod ka sa pag-assemble sa usa ka sistema alang sa imong kaugalingon, mahimong lisud ang paghunong. Ang nakapabalaka lang nako mao ang mga drayber alang sa wi-fi. Wala nay lain pa nga walay mahimo, iresponsable ug kurakot kay sa pagtukod sa mga drayber gikan sa tinubdan. Apan nahibal-an ko nga sa madugay o sa madali mobalhin kami niini nga basura.

Sa kinatibuk-an, sama sa imong nahibal-an, ang pag-fiddling sa usb wi-fi sa Linux mao sakit ug medyo walay lami (sama sa Russian nga sushi).

Ang kahon usab adunay usa ka CD nga adunay mga drayber. Sa walay daghang paglaum akong gitan-aw kung unsa ang naa niini - siguradong wala nila kini giatiman. Ang pagpangita sa Internet nagdala kanako sa website sa tiggama, apan adunay usa ka drayber sa Linux didto alang lamang sa pagbag-o sa aparato v4, ug sa akong mga bukton mao ang v5.21. Ug labut pa, alang sa karaan kaayo nga mga bersyon sa kernel 2.6-3.16. Nawad-an og kadasig tungod sa kapakyasan sa sinugdanan pa lang, nakahunahuna na ko nga gikuha nako ang TL-WN727N (kini mas mahal ug makadumala sa 300Mbps kumpara sa 150 alang sa akoa, apan ingon nga kini nahimo, kini dili igsapayan alang sa ang raspberry, kini isulat sa ulahi). Apan ang labing hinungdanon nga butang mao nga ang mga drayber alang niini naglungtad na ug yano nga na-install ingon usa ka pakete firmware-ralink. Sa kasagaran mahimo nimong tan-awon ang rebisyon sa device sa lawas sa device sa sticker sunod sa serial number.

Ang dugang nga pag-googling ug pagbisita sa lain-laing mga forum wala magdala ug daghang kaayohan. Dayag nga walay usa sa akong atubangan nga misulay sa pagkonektar sa ingon nga adapter sa Linux. Hmm, swerte ko nga murag nalumos.

Bisan pa, dili, namakak ako, ang pagbisita sa mga forum (kadaghanan sa English-language) nagbunga usab; sa pipila ka mga hilisgutan adunay paghisgot sa usa ka Mr. . Ang iyang git repository anaa sa katapusan sa artikulo sa mga link. Ug ang ikaduhang leksyon nga akong nakat-unan mao nga kinahanglan nimo nga mailhan ang imong aparato aron masabtan kung unsang drayber ang angay alang niini.

Bahin 1: Ang Bourne Identity

Kung ang aparato gisaksak sa pantalan, siyempre, wala’y LED nga nagsiga. Ug sa kinatibuk-an dili klaro sa bisan unsang paagi kung ang usa ka butang molihok o dili.

Una sa tanan, aron mahibal-an kung nakita ba sa kernel ang among aparato, akong tan-awon sa 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

Nahibal-an nga kini nakakita, ug klaro pa nga adunay usa ka Realtek chip ug ang VID / PID sa aparato mismo sa usb bus.

Adto pa ta ug tan-awon lsusb, ug dinhi usa pa ka kapakyasan ang naghulat kanato

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

Wala mahibal-an sa sistema kung unsa nga klase sa aparato kini, ug naulaw nga nagpakita sa usa ka walay sulod nga wanang imbis sa ngalan (bisan kung ang vendor = 2357 siguradong TP-Link).

Niini nga yugto, ang mausisaon nga magbabasa tingali nakamatikod na sa usa ka butang nga makapaikag, apan atong ibilin kini hangtud sa atong panahon.

Ang pagsiksik sa problema sa walay sulod nga mga ngalan nagdala kanako ngadto sa usa ka site nga adunay mga identifier, diin ang impormasyon sa nailhan nga VID/PID gisulod. Ang among 2357:0111 wala didto. Ingon nga kini nahimo sa ulahi, ang utility lsusb naggamit sa file /usr/share/misc/usb.ids, nga mao ra ang lista sa mga ID gikan niini nga site. Alang sa kaanindot sa display, gidugangan lang nako ang mga linya para sa vendor nga TP-Link sa akong sistema.

2357  TP-Link
        0111  TL-WN727N v5.21

Bueno, gitul-id namon ang display sa lista sa mga aparato, apan wala kini nagdala kanamo usa ka lakang nga mas duol sa pagpili sa usa ka drayber. Aron makapili usa ka drayber, kinahanglan nimo mahibal-an kung unsang chip ang gihimo sa imong whistle. Ang sunod nga dili malampuson nga mga pagsulay sa pagpangita niini sa Internet wala magdala sa bisan unsang maayo. Armado sa usa ka nipis nga slotted screwdriver, ako mainampingon nga gitangtang ang adapter cap ug ang bangis nga utok ni Tiyo Liao makita sa tanan nga limpyo nga pagkahubo. Ubos sa usa ka magnifying glass imong makita ang ngalan sa chip - RTL8188EUS. Maayo na kini. Sa pipila ka mga forum nakita nako ang mga post nga ang drayber gikan sa parehas nga gentleman lwfinger haum kaayo alang niini nga chip (bisan kung nagsulat lamang siya bahin sa RTL8188EU).

Bahin 2: Ang Bourne Supremacy

Gi-download nako ang mga gigikanan sa drayber gikan sa Git.

Panahon na nga i-install pag-usab ang Windows ug buhaton kung unsa ang kasagarang gilangkit sa mga tiggamit sa Linux - pag-assemble sa usa ka butang gikan sa pipila ka mga lahi. Ang pag-assemble sa mga drayber, ingon nga kini nahimo, gamay ra ang kalainan sa pag-compile sa mga programa:

make
sudo make install

apan sa pag-compile sa mga modulo sa kernel kinahanglan namo ang mga file sa header sa kernel alang sa among piho nga bersyon.

Adunay usa ka pakete sa stock repository raspberrypi-kernel-headers, apan kini naglangkob sa kernel nga bersyon sa mga file 4.19.66-v7l+, ug dili kana angay kanamo. Apan aron makuha ang mga ulohan sa gikinahanglan nga bersyon, ingon nga kini nahimo, adunay usa ka kombenyente nga himan rpi-tinubdan (link sa katapusan sa Github), diin mahimo nimo i-download ang kinahanglan nga mga ulohan. Among gi-clone ang repository, gihimo ang script nga executable, ug gipadagan kini. Ang una nga paglansad napakyas sa usa ka sayup - wala’y gamit bc. Maayo na lang, naa kini sa repository ug gi-install ra namon kini.

sudo apt-get install bc

Pagkahuman niini, ang pag-restart ug pag-download sa mga header (ug dayon ang pag-set up sa usa ka butang, wala nako mahinumduman karon) nagkinahanglan og pipila ka panahon ug mahimo ka nga molingkod sa imong lingkuranan, ang Windows nahimong mas maayo sa tanan nga mga pagpakita niini.

Human ma-download ang tanan nga mga ulohan, susiha nga makita ang direktoryo /lib/modules/4.19.73-v7+ ug diha niini ang symlink nagpunting sa dapit diin nahimutang ang na-download nga mga file (para kanako kini /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

Ang yugto sa pagpangandam nahuman na, mahimo ka magsugod sa asembliya. Ang pag-assemble pag-usab sa mga module nagkinahanglan og pipila ka panahon, ang Raspberry dili usa ka paspas nga mananap (kini adunay 32bit 900Mhz Cortex ARM v7).
Busa ang tanan gihugpong. Gi-install namon ang drayber sa 2nd nga lakang (paghimo sa pag-install), samtang nagkopya usab sa daghang mga file sa firmware nga gikinahanglan aron magtrabaho ang drayber:

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

Bahin 3. Ang Bourne Ultimatum

Gisaksak nako ang whistle sa pantalan ug... walay mahitabo. Wala ba kini kapuslanan?

Nagsugod ako sa pagtuon sa mga file sa sulod sa proyekto ug sa usa niini akong nakit-an kung unsa ang problema: ang drayber nagtino sa usa ka kompleto nga lista sa mga VID/PID identifier nga mahimo niini. Ug aron magamit ang among aparato sa kini nga drayber, gidugang ra nako ang akong id sa 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 */
};

Gi-recompile nako ang driver ug gi-install kini sa sistema.

And this time nagsugod ang tanan. Ang suga sa adapter misiga ug usa ka bag-ong aparato ang nagpakita sa lista sa mga interface sa network.

Ang pagtan-aw sa mga wireless interface nagpakita sa mosunod:

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 para sa mga nagbasa hangtod sa katapusan

Hinumdumi kung giunsa nako giingon nga dili igsapayan kung unsa ang labing taas nga tulin nga gipahayag sa imong adapter?
Busa, sa Malinka (sa wala pa ang pagpagawas sa modelo 4), ang tanan nga mga himan (lakip ang ethernet adapter) naglingkod sa samang usb bus. Nindot, di ba? Ug busa ang bandwidth sa usb bus gibahin sa tanan nga mga aparato niini. Kung gisukod ang katulin pinaagi sa ethernet ug pinaagi sa usb wi-fi (konektado sa 1 nga router) sa hangin ug pinaagi sa wire, kini mga 20Mbit / s.

PS Sa kinatibuk-an, kini nga giya sa pag-compile sa usa ka drayber alang niining partikular nga adapter balido dili lamang alang sa RPI. Gibalikbalik nako kini sa akong desktop gamit ang Linux Mint - ang tanan nagtrabaho usab didto. Kinahanglan ra nimo nga i-download ang kinahanglan nga mga file sa header alang sa imong bersyon sa kernel sa parehas nga paagi.

UPD. Ang nahibal-an nga mga tawo nagsugyot: aron dili magdepende sa bersyon sa kernel, kinahanglan nimo nga kolektahon ug i-install ang mga drayber gamit ang dkms. Ang readme alang sa drayber naglangkob usab niini nga opsyon.

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. Gisugyot pag-patch kay ang device id gidawat sa mainstream nga sanga sa lwfinger/rtl8188eu repository.

mga pakisayran
- RPi USB Wi-Fi Adapters
- Gitbub lwfinger/rtl8188eu
- usb.ids
- rpi-tinubdan

Source: www.habr.com