Биёед бо RaspberryPi бо TP-Link TL-WN727N дӯстӣ кунем

Эй Ҳабр!

Боре ман қарор додам, ки малинаи худро тавассути ҳаво ба Интернет пайваст кунам.

Бо ин мақсад ман аз мағозаи наздиктарин аз ширкати маъруфи TP-Link як ҳуштаки USB wi-fi харидам. Ман дарҳол мегӯям, ки ин як навъ модули nano usb нест, балки як дастгоҳи хеле калонест, ки тақрибан ба андозаи флеш-диски муқаррарӣ (ё агар хоҳед, андозаи ангушти ишоратии марди калонсол) аст. Пеш аз харид кардан, ман каме дар бораи рӯйхати истеҳсолкунандагони ҳуштакҳои дастгирӣшаванда барои RPI тадқиқот гузаронидам ва TP-Link дар рӯйхат буданд (аммо, тавре ки баъдтар маълум шуд, ман нозукиҳоро ба назар нагирифтам, зеро шайтон, тавре ки мо медонем, , дар тафсилот аст). Инак, достони сарди нохушиҳои ман оғоз мешавад; мо ба диққати шумо як достони детективро дар 3 қисм пешниҳод мекунем. Барои онҳое, ки таваҷҷӯҳ доранд, лутфан ба гурба муроҷиат кунед.

Мақолаҳо | Пайваст кардани адаптери WN727N WiFi ба Ubuntu/Mint Он ба ман қисман кӯмак кард, аммо дар аввал чизҳои аввал.

Шартҳои мушкилот

дода шудааст:

  1. компютери Шӯрои ягона Raspberry Pi 2 B v1.1 – 1 дона
  2. USB wi-fi ҳуштак WN727N - 1 дона
  3. як ҷуфт дастҳои на он қадар каҷ - 2 дона
  4. Навтарин Raspbian ҳамчун OS насб карда шудааст (дар асоси Debian 10 Buster)
  5. версияи ядро ​​​​4.19.73-v7+

Ҷустуҷӯ: ба Интернет пайваст шавед (Wi-Fi аз роутери хонагии шумо тақсим карда мешавад)

Пас аз кушодани адаптер, ман дастурҳои дохилиро хондам:

Мутобиқати система: Windows 10/8/7/XP (ҳатто осмон, ҳатто XP) ва MacOS 10.9-10.13

Ҳмм, чун маъмул, як калима дар бораи Linux нест. Он 2k19 буд ва ронандагонро ҳанӯз дастӣ ҷамъ кардан лозим буд...

Мо бо мо 2 компилятор, 75 ҳазор китобхона, панҷ блоки бинарӣ, ним массиви занони бараҳна бо логотип ва як баҳри сарлавҳаҳои ҳама забонҳо ва аломатҳо доштем. На ин ки ин маҷмӯи зарурӣ барои кор аст. Аммо вақте ки шумо барои худ насб кардани системаро оғоз мекунед, қатъ кардан душвор мешавад. Ягона чизе, ки маро ба ташвиш овард, ронандагон барои wi-fi буд. Аз сарчашмахо сохтани ронандагон дида бечоратар, бемасъулиятона ва фасодкортар чизе нест. Аммо медонистам, ки дер ё зуд ба ин ахлот мегузарем.

Умуман, тавре ки шумо медонед, бо USB wi-fi дар Linux кор кардан аст дарднок ва то андозае бемаза (ба монанди суши русӣ).

Дар қуттӣ инчунин CD бо драйверҳо мавҷуд аст. Бе умеди зиёд ман ба он чизе ки дар он аст, нигоҳ мекунам - онҳо бешубҳа ба он ғамхорӣ накардаанд. Ҷустуҷӯи интернет маро ба вебсайти истеҳсолкунанда овард, аммо дар он ҷо як драйвери Linux танҳо барои таҷдиди дастгоҳ мавҷуд аст v4, ва дар огуши ман буд v5.21. Ва ғайр аз ин, барои версияҳои ядрои хеле кӯҳна 2.6-3.16. Аз нокомӣ дар аввал рӯҳафтода шуда, ман аллакай фикр мекардам, ки ман бояд TL-WN727N -ро гирифта бошам (он каме гаронтар аст ва метавонад 300 Мбит / сонияро дар муқоиса бо 150 барои ман идора кунад, аммо тавре маълум шуд, ин барои он тамоман муҳим нест. малина, дар ин бора баъдтар навишта мешавад). Аммо чизи аз ҳама муҳим он аст, ки драйверҳо барои он аллакай мавҷуданд ва танҳо ҳамчун баста насб карда шудаанд firmware-ralink. Шумо одатан метавонед нусхаи дастгоҳро дар бадани дастгоҳ дар стикер дар паҳлӯи рақами силсилавӣ бубинед.

Гуглинги минбаъда ва боздид аз форумҳои гуногун фоидаи зиёд наовард. Эҳтимол, ҳеҷ кас пеш аз ман кӯшиш накардааст, ки чунин адаптерро ба Linux пайваст кунад. Хм, ман мисли одами ғарқшуда хушбахтам.

Ҳарчанд, не, ман дурӯғ мегӯям, боздид аз форумҳо (асосан форумҳои инглисизабон) низ самар дод, дар баъзе мавзӯъҳо дар бораи як ҷаноби lwfinger, ки бо навиштани як қатор драйверҳо барои адаптерҳои Wi-Fi машҳур аст, зикр мешуд. . Анбори git-и ӯ дар охири мақола дар истинодҳо ҷойгир аст. Ва дарси дуюм, ки ман фаҳмидам, ин аст, ки шумо бояд дастгоҳи худро муайян кунед, то бифаҳмед, ки кадом драйвер барои он мувофиқ аст.

Қисми 1: Ҳувияти Борн

Вақте ки дастгоҳ ба порт васл карда шуд, албатта, ягон LED фурӯзон намешуд. Ва умуман маълум нест, ки чизе кор мекунад ё не.

Пеш аз ҳама, барои фаҳмидани он ки ядро ​​дастгоҳи моро мебинад, ман дар 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

Маълум шуд, ки он мебинад ва ҳатто равшан аст, ки дар автобуси USB чипи Realtek ва VID/PID худи дастгоҳ мавҷуд аст.

Биёед, бештар равем ва бубинем лусб, ва дар ин чо моро боз як нокомй интизор аст

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

Система намедонад, ки он чӣ гуна дастгоҳ аст ва шармгинона ба ҷои ном фазои холӣ нишон медиҳад (гарчанде ки фурӯшанда = 2357 бешубҳа TP-Link аст).

Дар ин марҳила хонандаи кунҷков шояд як чизи ҷолиберо пай бурда бошад, вале мо онро то замони худ мегузорем.

Таҳқиқи мушкилоти номҳои холӣ маро ба сайте бурд, ки идентификаторҳо дорад, ки дар он маълумот дар бораи VID/PID маълум ворид карда мешавад. 2357:0111 мо дар он ҷо набуд. Чунон ки баъдтар маълум шуд, коммуналй лусб файлро истифода мебарад /usr/share/misc/usb.ids, ки ҳамон рӯйхати ID-ҳои ин сайт аст. Барои зебоии намоиш, ман танҳо дар системаи худ сатрҳои фурӯшандаи TP-Link илова кардам.

2357  TP-Link
        0111  TL-WN727N v5.21

Хуб, мо намоишро дар рӯйхати дастгоҳҳо ислоҳ кардем, аммо он моро ба интихоби ронанда як қадам наздик накард. Барои интихоби ронанда, шумо бояд бидонед, ки ҳуштак дар кадом чип сохта шудааст. Кӯшишҳои навбатии номуваффақ барои фаҳмидани ин дар Интернет ба ягон чизи хуб оварда нарасонданд. Ман бо як мурваттобаки тунуки сӯрохӣ мусаллаҳ шуда, сарпӯши адаптерро бодиққат меканам ва мағзи ашаддии амаки Ляо бо тамоми бараҳнагии худ намоён мешавад. Дар зери шишаи калон шумо номи чипро мебинед - RTL8188EUS. Ин аллакай хуб аст. Дар баъзе форумҳо ман навиштаҳоеро дидам, ки ронандаи ҳамон ҷаноби lwfinger барои ин чип мувофиқ аст (гарчанде ки ӯ танҳо дар бораи RTL8188EU менависад).

Қисми 2: Бартарии Борн

Ман сарчашмаҳои драйверро аз Git зеркашӣ мекунам.

Вақти он расидааст, ки Windows-ро аз нав насб кунед ва кореро анҷом диҳед, ки корбарони Linux одатан бо он алоқаманданд - ҷамъ кардани чизе аз баъзе намудҳо. Ҷамъоварии драйверҳо, тавре маълум мешавад, аз таҳияи барномаҳо каме фарқ мекунад:

make
sudo make install

аммо барои тартиб додани модулҳои ядро ​​ба мо файлҳои сарлавҳаи ядро ​​барои версияи мушаххаси мо лозим аст.

Дар анбори фондӣ баста мавҷуд аст сарлавҳаҳои raspberrypi-ядро, аммо он версияи ядрои файлҳоро дар бар мегирад 4.19.66-v7l+, ва ин ба мо мувофиқ нест. Аммо барои ба даст овардани сарлавҳаҳои версияи зарурӣ, чунон ки маълум шуд, асбоби мувофиқ мавҷуд аст rpi-манбаъ (пайванд дар охири Github), ки бо он шумо метавонед сарлавҳаҳои заруриро зеркашӣ кунед. Мо анборро клон мекунем, скриптро иҷрошаванда месозем ва онро иҷро мекунем. Оғози аввал бо хатогӣ ноком мешавад - ягон утилита вуҷуд надорад bc. Хушбахтона, он дар анбор аст ва мо онро танҳо насб мекунем.

sudo apt-get install bc

Пас аз ин, аз нав оғоз кардан ва зеркашии сарлавҳаҳо (ва он гоҳ насб кардани чизе, ман ҳоло дар ёд надорам) каме вақт мегирад ва шумо метавонед дар курсии худ нишинед, Windows дар ҳама зуҳуроти худ беҳтар шудааст.

Пас аз зеркашӣ кардани ҳама сарлавҳаҳо, санҷед, ки директория пайдо мешавад /lib/modules/4.19.73-v7+ ва дар он истинод ба ҷое, ки файлҳои зеркашидашуда ҷойгиранд, ишора мекунад (барои ман ин /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

Марҳилаи омодагӣ ба анҷом расид, шумо метавонед ба монтаж оғоз кунед. Ҷамъоварии модулҳо аз нав каме вақт мегирад, Raspberry ҳайвони зуд нест (он дорои 32bit 900Mhz Cortex ARM v7).
Пас ҳама чиз тартиб дода шуд. Мо драйверро дар қадами 2-юм насб мекунем (насб кунед) ва инчунин нусхабардории файлҳои нармафзори бештаре, ки барои кор кардани драйвер заруранд:

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. Ультиматуми Борн

Ман ҳуштакро ба бандар мегузорам ва... ҳеҷ чиз рӯй намедиҳад. Оё ин ҳама бехуда буд?

Ман омӯхтани файлҳои дохили лоиҳаро оғоз мекунам ва дар яке аз онҳо мефаҳмам, ки мушкилот чӣ буд: ронанда рӯйхати пурраи идентификаторҳои VID/PID-ро, ки метавонад хидмат расонад, муайян мекунад. Ва барои он ки дастгоҳи мо бо ин драйвер кор кунад, ман танҳо ID-и худро ба файл илова кардам 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 */
};

Ман драйверро дубора тартиб додам ва онро дар система дубора насб кардам.

Ва ин дафъа ҳама чиз оғоз ёфт. Чароғи адаптер фурӯзон шуд ва дар рӯйхати интерфейсҳои шабака дастгоҳи нав пайдо шуд.

Намоиши интерфейсҳои бесим инҳоро нишон медиҳад:

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

Бонус барои онҳое, ки то охир мехонанд

Дар хотир доред, ки чӣ гуна ман гуфтам, ки дар адаптери шумо кадом суръати максималӣ нишон дода шудааст, муҳим нест?
Ҳамин тавр, дар Малинка (пеш аз баровардани модели 4) ҳама дастгоҳҳо (аз ҷумла адаптери Ethernet) дар як автобуси USB мешинанд. Аҷоиб, дуруст? Аз ин рӯ, маҷрои автобуси USB байни ҳамаи дастгоҳҳои он тақсим карда мешавад. Ҳангоми чен кардани суръат ҳам тавассути Ethernet ва ҳам тавассути USB wi-fi (ба 1 роутер пайваст) ҳам тавассути ҳаво ва ҳам тавассути сим, он тақрибан 20 Мбит/с буд.

PS Умуман, ин дастур барои тартиб додани драйвер барои ин адаптери мушаххас на танҳо барои RPI эътибор дорад. Пас аз он ман онро дар мизи кории худ бо Linux Mint такрор кардам - ​​ҳама чиз дар он ҷо низ кор мекард. Ба шумо танҳо лозим аст, ки файлҳои сарлавҳаи заруриро барои версияи ядрои худ ба ҳамин тариқ зеркашӣ кунед.

UPD. Одамони донишманд пешниҳод карданд: барои он ки аз версияи ядро ​​вобаста набошед, шумо бояд драйверҳоро бо истифода аз dkms ҷамъ ва насб кунед. Readme барои ронанда низ ин хосиятро дар бар мегирад.

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. Пешниҳод шудааст часпондан барои ID дастгоҳ ба шохаи асосии анбори lwfinger/rtl8188eu қабул карда шуд.

мурожиат
- Адаптерҳои RPi USB Wi-Fi
- Gitbub lwfinger/rtl8188eu
- usb.ids
- rpi-манбаъ

Манбаъ: will.com