Gadewch i ni wneud ffrindiau RaspberryPi gyda TP-Link TL-WN727N

Hei Habr!

Penderfynais unwaith gysylltu fy mafon i'r Rhyngrwyd dros yr awyr.

Wedi dweud na gwneud yn gynt, at y diben hwn prynais chwiban usb wi-fi gan y cwmni adnabyddus TP-Link o'r siop agosaf. Fe ddywedaf ar unwaith nad rhyw fath o fodiwl nano usb yw hwn, ond dyfais eithaf mawr, tua maint gyriant fflach arferol (neu, os mynnwch, maint bys mynegai dyn oedolyn). Cyn prynu, gwnes ychydig o ymchwil ar y rhestr o weithgynhyrchwyr chwibanau â chymorth ar gyfer RPI ac roedd TP-Link ar y rhestr (fodd bynnag, fel y digwyddodd yn ddiweddarach, ni wnes i ystyried y cynildeb, oherwydd y diafol, fel y gwyddom , sydd yn y manylion). Felly, mae stori oer fy anffawd yn dechrau; rydym yn cyflwyno i'ch sylw stori dditectif mewn 3 rhan. I'r rhai sydd â diddordeb, cyfeiriwch at cath.

Erthygl Cysylltu'r addasydd WiFi WN727N i Ubuntu/Mint Fe helpodd fi yn rhannol, ond pethau cyntaf yn gyntaf.

Amodau'r broblem

Wedi'i roi:

  1. cyfrifiadur bwrdd sengl Raspberry Pi 2 B v1.1 – 1 darn
  2. chwiban wi-fi usb WN727N - 1 darn
  3. pâr o ddwylo nad ydynt yn hollol gam - 2 ddarn
  4. Mae'r Raspbian diweddaraf wedi'i osod fel yr OS (yn seiliedig ar Debian 10 Buster)
  5. fersiwn cnewyllyn 4.19.73-v7+

Darganfod: cysylltu â'r Rhyngrwyd (mae Wi-Fi yn cael ei ddosbarthu o'ch llwybrydd cartref)

Ar ôl dadbacio'r addasydd, darllenais y cyfarwyddiadau y tu mewn:

Cydnawsedd y System: Windows 10/8/7/XP (hyd yn oed yr awyr, hyd yn oed XP) a MacOS 10.9-10.13

Hmm, fel arfer, nid gair am Linux. Roedd yn 2k19, ac roedd angen i'r gyrwyr gael eu cydosod â llaw o hyd ...

Roedd gennym gyda ni 2 casglwr, 75 mil o lyfrgelloedd, pum smotiau deuaidd, hanner amrywiaeth o fenywod noeth gyda logo a môr cyfan o benawdau o bob iaith a markups. Nid bod hon yn set angenrheidiol ar gyfer y swydd. Ond ar ôl i chi ddechrau cydosod system i chi'ch hun, mae'n dod yn anodd rhoi'r gorau iddi. Yr unig beth a achosodd bryder i mi oedd y gyrwyr wi-fi. Nid oes dim byd mwy diymadferth, anghyfrifol a llygredig nag adeiladu gyrwyr o'r ffynhonnell. Ond roeddwn i'n gwybod yn hwyr neu'n hwyrach y byddem yn newid i'r sbwriel hwn.

Yn gyffredinol, fel y gwyddoch, mae ffidlan gyda usb wi-fi ar Linux poenus a braidd yn ddi-flas (fel swshi Rwsiaidd).

Mae'r blwch hefyd yn cynnwys CD gyda gyrwyr. Heb fawr o obaith edrychaf ar yr hyn sydd arno - yn bendant nid ydynt wedi gofalu amdano. Daeth chwiliad Rhyngrwyd â mi i wefan y gwneuthurwr, ond dim ond ar gyfer adolygu dyfeisiau y mae gyrrwr Linux yno v4, ac yn fy mreichiau oedd v5.21. Ac ar wahân, ar gyfer fersiynau cnewyllyn hen iawn 2.6-3.16. Wedi fy nigalonni gan y methiant ar y cychwyn cyntaf, roeddwn eisoes yn meddwl y dylwn fod wedi cymryd y TL-WN727N (mae ychydig yn ddrytach a gall drin 300Mbps yn erbyn 150 i mi, ond fel y digwyddodd, nid oes ots am hyn o gwbl ar gyfer y mafon, ysgrifennir am hyn yn ddiweddarach). Ond y peth pwysicaf yw bod gyrwyr ar ei gyfer eisoes yn bodoli ac yn cael eu gosod yn syml fel pecyn firmware-ralink. Fel arfer gallwch weld yr adolygiad dyfais ar gorff y ddyfais ar sticer wrth ymyl y rhif cyfresol.

Ni ddaeth llawer o les yn sgîl googlio pellach ac ymweld â fforymau amrywiol. Mae'n debyg nad oes neb o'm blaen wedi ceisio cysylltu addasydd o'r fath â Linux. Hmm, dwi mor lwcus â dyn sydd wedi boddi.

Er, na, dwi'n dweud celwydd, fe wnaeth ymweld â fforymau (rhai Saesneg yn bennaf) ddwyn ffrwyth hefyd; mewn rhai pynciau roedd sôn am Mr. lwfinger penodol, sy'n enwog am ysgrifennu nifer o yrwyr ar gyfer addaswyr Wi-Fi . Mae ei gadwrfa git ar ddiwedd yr erthygl yn y dolenni. A'r ail wers a ddysgais yw bod angen i chi adnabod eich dyfais er mwyn deall pa yrrwr all fod yn addas ar ei chyfer.

Rhan 1: Hunaniaeth Bourne

Pan blygiwyd y ddyfais i'r porthladd, wrth gwrs, nid oedd unrhyw LED wedi'i oleuo. Ac yn gyffredinol nid yw'n glir mewn unrhyw ffordd a yw rhywbeth yn gweithio ai peidio.

Yn gyntaf oll, i ddarganfod a yw'r cnewyllyn yn gweld ein dyfais, edrychaf yn 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

Mae'n troi allan ei fod yn gweld, ac mae hyd yn oed yn amlwg bod yna sglodion Realtek a VID / PID y ddyfais ei hun ar y bws usb.

Gadewch i ni fynd ymhellach ac edrych lsusb, ac yma y mae methiant arall yn ein disgwyl

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

Nid yw'r system yn gwybod pa fath o ddyfais ydyw, ac mae'n dangos lle gwag yn lle'r enw (er bod gwerthwr = 2357 yn bendant yn TP-Link).

Ar y cam hwn, mae'n debyg bod y darllenydd chwilfrydig eisoes wedi sylwi ar rywbeth diddorol, ond byddwn yn ei adael tan ein hamser.

Arweiniodd ymchwilio i broblem enwau gwag fi at safle gyda dynodwyr, lle mae gwybodaeth ar VID/PID hysbys yn cael ei fewnbynnu. Nid oedd ein 2357:0111 yno. Fel y mae'n troi allan yn ddiweddarach, y cyfleustodau lsusb yn defnyddio ffeil /usr/share/misc/usb.ids, sef yr un rhestr o IDau o'r wefan hon. Er mwyn harddwch yr arddangosfa, fe wnes i ychwanegu llinellau ar gyfer y gwerthwr TP-Link yn fy system.

2357  TP-Link
        0111  TL-WN727N v5.21

Wel, fe wnaethon ni gywiro'r arddangosfa yn y rhestr o ddyfeisiau, ond ni ddaeth â ni un cam yn nes at ddewis gyrrwr. I ddewis gyrrwr, mae angen i chi wybod ar ba sglodyn y gwneir eich chwiban. Ni arweiniodd yr ymdrechion aflwyddiannus nesaf i ddarganfod hyn ar y Rhyngrwyd at unrhyw beth da. Gyda sgriwdreifer slotiedig tenau, rwy'n tynnu'r cap addasydd yn ofalus ac mae syniad dieflig Wncwl Liao yn ymddangos yn ei holl noethni dilychwin. O dan chwyddwydr gallwch weld enw'r sglodyn - RTL8188EUS. Mae hyn eisoes yn dda. Ar rai fforymau gwelais negeseuon bod y gyrrwr o'r un gŵr bonheddig lwfinger yn addas iawn ar gyfer y sglodyn hwn (er mai dim ond am RTL8188EU y mae'n ysgrifennu).

Rhan 2: Goruchafiaeth Bourne

Rwy'n lawrlwytho'r ffynonellau gyrrwr o Git.

Mae'n bryd ailosod Windows a gwneud yr hyn y mae defnyddwyr Linux fel arfer yn gysylltiedig ag ef - cydosod rhywbeth o ryw fath. Nid yw cydosod gyrwyr, fel y mae'n digwydd, yn wahanol iawn i lunio rhaglenni:

make
sudo make install

ond i lunio modiwlau cnewyllyn mae angen y ffeiliau pennawd cnewyllyn ar gyfer ein fersiwn penodol.

Mae pecyn yn y storfa stoc penawdau raspberrypi-kernel, ond mae'n cynnwys fersiwn cnewyllyn y ffeiliau 4.19.66- v7l+, ac nid yw hynny'n addas i ni. Ond i gael penawdau'r fersiwn ofynnol, fel y digwyddodd, mae yna offeryn cyfleus rpi-ffynhonnell (dolen ar y diwedd ar Github), y gallwch chi lawrlwytho'r penawdau angenrheidiol gyda nhw. Rydyn ni'n clonio'r ystorfa, yn gwneud y sgript yn weithredadwy, ac yn ei rhedeg. Mae'r lansiad cyntaf yn methu â gwall - nid oes unrhyw ddefnyddioldeb bc. Yn ffodus, mae yn yr ystorfa ac rydym yn ei osod yn syml.

sudo apt-get install bc

Ar ôl hynny, mae ailgychwyn a lawrlwytho'r penawdau (ac yna sefydlu rhywbeth, nid wyf yn cofio nawr) yn cymryd peth amser a gallwch eistedd yn ôl ac mae Windows wedi dod yn well yn ei holl amlygiadau.

Ar ôl i'r penawdau i gyd gael eu llwytho i lawr, gwiriwch fod y cyfeiriadur yn ymddangos /lib/modules/4.19.73-v7+ ac ynddo mae’r symlink yn pwyntio at y man lle mae’r ffeiliau sydd wedi’u llwytho i lawr wedi’u lleoli (i mi mae’n /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

Mae'r cam paratoi wedi'i gwblhau, gallwch chi ddechrau'r gwasanaeth. Mae cydosod y modiwlau eto yn cymryd peth amser, nid yw'r Mafon yn fwystfil cyflym (mae ganddo Cortex ARM 32bit 900Mhz v7).
Felly popeth a luniwyd. Rydyn ni'n gosod y gyrrwr yn yr 2il gam (gosodwch), tra hefyd yn copïo mwy o ffeiliau firmware sy'n angenrheidiol i'r gyrrwr weithio:

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

Rhan 3. The Bourne Ultimatum

Rwy'n plygio'r chwiban i'r porthladd a... dim byd yn digwydd. Oedd y cyfan am ddim?

Dechreuaf astudio'r ffeiliau y tu mewn i'r prosiect ac yn un ohonynt rwy'n darganfod beth oedd y broblem: mae'r gyrrwr yn nodi rhestr gyflawn o ddynodwyr VID / PID y gall eu gwasanaethu. Ac er mwyn i'n dyfais weithio gyda'r gyrrwr hwn, fe wnes i ychwanegu fy ID i'r ffeil 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 */
};

Fe wnes i ail-grynhoi'r gyrrwr a'i ailosod ar y system.

A'r tro hwn dechreuodd popeth. Goleuodd y golau ar yr addasydd ac ymddangosodd dyfais newydd yn y rhestr o ryngwynebau rhwydwaith.

Mae gwylio rhyngwynebau diwifr yn dangos y canlynol:

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

Bonws i'r rhai sy'n darllen hyd y diwedd

Cofiwch sut y dywedais nad oes ots pa gyflymder uchaf a nodir ar eich addasydd?
Felly, ar Malinka (cyn rhyddhau model 4), mae pob dyfais (gan gynnwys yr addasydd ether-rwyd) yn eistedd ar yr un bws usb. Gwych, iawn? Ac felly mae lled band y bws usb wedi'i rannu rhwng yr holl ddyfeisiau sydd arno. Wrth fesur y cyflymder trwy ether-rwyd a thrwy usb wi-fi (wedi'i gysylltu ag 1 llwybrydd) gan aer a gwifren, roedd tua 20Mbit yr eiliad.

PS Yn gyffredinol, mae'r canllaw hwn ar gyfer llunio gyrrwr ar gyfer yr addasydd penodol hwn yn ddilys nid yn unig ar gyfer RPI. Yna fe wnes i ei ailadrodd ar fy n ben-desg gyda Linux Mint - roedd popeth yn gweithio yno hefyd. Mae angen i chi lawrlwytho'r ffeiliau pennawd angenrheidiol ar gyfer eich fersiwn cnewyllyn yn yr un modd.

UPD. Awgrymodd pobl wybodus: er mwyn peidio â dibynnu ar y fersiwn cnewyllyn, mae angen i chi gasglu a gosod gyrwyr gan ddefnyddio dkms. Mae darlleniad y gyrrwr hefyd yn cynnwys yr opsiwn hwn.

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. Arfaethedig clwt derbyniwyd id dyfais i gangen brif ffrwd y gadwrfa lwfinger/rtl8188eu.

cyfeiriadau
- Addasyddion Wi-Fi USB RPi
- Gitbub lwfinger/rtl8188eu
- usb.ids
- rpi-ffynhonnell

Ffynhonnell: hab.com