Հե՜յ Հաբր։
Մի անգամ որոշեցի ազնվամորիս միացնել ինտերնետին օդով:
Այդ նպատակով ես մոտակա խանութից TP-Link հայտնի ընկերությունից գնեցի USB wi-fi սուլիչ: Անմիջապես կասեմ, որ սա նանո USB մոդուլ չէ, այլ բավականին մեծ սարք, սովորական ֆլեշ կրիչի չափով (կամ, եթե ցանկանում եք, չափահաս տղամարդու ցուցամատի չափով): Նախքան գնելը, ես մի փոքր ուսումնասիրեցի RPI-ի համար աջակցվող սուլիչ արտադրողների ցանկը և TP-Link-ը ցանկում էր (սակայն, ինչպես պարզվեց ավելի ուշ, ես հաշվի չառա նրբությունները, քանի որ սատանան, ինչպես գիտենք. , մանրամասների մեջ է): Այսպիսով, սկսվում է իմ դժբախտությունների սառը հեքիաթը, ձեր ուշադրությանն ենք ներկայացնում դետեկտիվ 3 մասից. Հետաքրքրվողներին խնդրում ենք դիմել cat.
հոդված
Խնդրի պայմանները
Տրված է.
- մեկ տախտակային համակարգիչ Raspberry Pi 2 B v1.1 – 1 հատ
- usb wi-fi սուլիչ WN727N - 1 հատ
- մի զույգ ոչ այնքան ծուռ ձեռքեր՝ 2 հատ
- Վերջին Raspbian-ը տեղադրված է որպես ՕՀ (հիմնված Debian 10 Buster-ի վրա)
- միջուկի տարբերակը 4.19.73-v7+
Գտեք. միացեք ինտերնետին (Wi-Fi-ը բաշխվում է ձեր տան երթուղիչից)
Ադապտորը բացելուց հետո ես կարդացի ներսի հրահանգները.
Համակարգի համատեղելիություն՝ Windows 10/8/7/XP (նույնիսկ երկինք, նույնիսկ XP) և MacOS 10.9-10.13
Հմմ, ինչպես միշտ, ոչ մի խոսք Linux-ի մասին: 2k19 էր, իսկ դրայվերները դեռ պետք էր ձեռքով հավաքել...
Մեզ հետ ունեինք 2 կոմպիլյատոր, 75 հազար գրադարան, հինգ երկուական բլբեր, մերկ կանանց կես զանգված՝ տարբերանշանով և բոլոր լեզուների վերնագրերի ու նշումների մի ամբողջ ծով։ Ոչ թե սա աշխատանքի համար անհրաժեշտ հավաքածու է: Բայց երբ դուք սկսում եք համակարգ հավաքել ինքներդ ձեզ համար, դժվար է դառնում կանգնեցնելը: Միակ բանը, որ ինձ անհանգստացնում էր, Wi-Fi-ի դրայվերներն էին: Չկա ավելի անօգնական, անպատասխանատու և կոռումպացված բան, քան սկզբնաղբյուրից վարորդներ կառուցելը։ Բայց ես գիտեի, որ վաղ թե ուշ մենք անցնելու ենք այս աղբին։
Ընդհանրապես, ինչպես գիտեք, Linux-ում usb wi-fi-ի հետ շփվելն է ցավոտ և որոշ չափով անճաշակ (ինչպես ռուսական սուշի):
Տուփը պարունակում է նաև սկավառակ՝ դրայվերներով։ Առանց մեծ հույսի ես նայում եմ, թե ինչ է դրա վրա, նրանք հաստատ չեն հոգացել դրա մասին: Ինտերնետում որոնումը բերեց ինձ արտադրողի կայք, բայց այնտեղ Linux-ի վարորդ կա միայն սարքի վերանայման համար v4, և իմ գրկում էր v5.21. Եվ բացի այդ, շատ հին միջուկի 2.6-3.16 տարբերակների համար։ Հուսահատված ձախողումից հենց սկզբից՝ ես արդեն մտածում էի, որ պետք է վերցնեի TL-WN727N-ը (այն մի փոքր ավելի թանկ է և կարող է 300 Մբիթ/վրկ արագությամբ աշխատել՝ իմ համար 150-ի դիմաց, բայց, ինչպես պարզվեց, սա բոլորովին կարևոր չէ: ազնվամորու, այս մասին կգրվի ավելի ուշ): Բայց ամենակարևորն այն է, որ դրա համար դրայվերներն արդեն կան և ուղղակի տեղադրվում են որպես փաթեթ որոնվածը-ralink. Դուք սովորաբար կարող եք դիտել սարքի վերանայումը սարքի մարմնի վրա սերիական համարի կողքին գտնվող կպչուկի վրա:
Հետագա գուգլելը և տարբեր ֆորումներ այցելելը շատ լավ բան չբերեց: Ըստ երևույթին, ինձնից առաջ ոչ ոք չի փորձել նման ադապտեր միացնել Linux-ին: Հմմ, ես խեղդված մարդու պես բախտավոր եմ։
Չնայած, ոչ, ստում եմ, ֆորումներ այցելելը (հիմնականում անգլալեզու) նույնպես արդյունք տվեց, որոշ թեմաներում հիշատակվում էր ոմն պարոն lwfinger-ի մասին, որը հայտնի է Wi-Fi ադապտերների համար մի շարք դրայվերներ գրելով. . Նրա git պահեստը գտնվում է հոդվածի վերջում՝ հղումներով։ Եվ երկրորդ դասը, որը ես սովորեցի, այն է, որ դուք պետք է նույնականացնեք ձեր սարքը, որպեսզի հասկանաք, թե որ վարորդը կարող է հարմար լինել դրա համար:
Մաս 1. Բորնի ինքնությունը
Երբ սարքը միացվեց պորտին, բնականաբար, ոչ մի լուսադիոդ չվառվեց: Եվ ընդհանրապես, ոչ մի կերպ պարզ չէ՝ ինչ-որ բան աշխատում է, թե ոչ։
Նախ, պարզելու համար, թե արդյոք միջուկը տեսնում է մեր սարքը, ես նայում եմ 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
Համակարգը չգիտի, թե դա ինչ տեսակի սարք է, և ամոթխած կերպով անունի փոխարեն դատարկ տարածություն է ցույց տալիս (չնայած se vendor=2357-ը հաստատ TP-Link է):
Հետաքրքրասեր ընթերցողն այս փուլում հավանաբար արդեն ինչ-որ հետաքրքիր բան է նկատել, բայց դա կթողնենք մեր ժամանակին։
Դատարկ անունների խնդիրն ուսումնասիրելը ինձ հանգեցրեց նույնացուցիչներով կայք, որտեղ մուտքագրվում է հայտնի VID/PID-ի մասին տեղեկատվությունը: Մեր 2357:0111-ը չկար։ Ինչպես պարզվեց ավելի ուշ, կոմունալ լսուսբ օգտագործում է ֆայլը /usr/share/misc/usb.ids, որն այս կայքի նույնացուցիչների ցանկն է: Էկրանի գեղեցկության համար ես պարզապես տողեր ավելացրի TP-Link-ի մատակարարի համար իմ համակարգում:
2357 TP-Link
0111 TL-WN727N v5.21
Դե, մենք շտկեցինք էկրանը սարքերի ցանկում, բայց դա մեզ մեկ քայլ չմոտեցրեց վարորդ ընտրելուն: Վարորդ ընտրելու համար դուք պետք է իմանաք, թե ինչ չիպի վրա է պատրաստված ձեր սուլիչը: Համացանցում դա պարզելու հերթական անհաջող փորձերը ոչ մի լավ բանի չհանգեցրին։ Զինված բարակ բացվածքով պտուտակահանով, ես զգուշորեն հանում եմ ադապտերների գլխարկը, և քեռի Լիաոյի արատավոր միտքը հայտնվում է իր ողջ մաքուր մերկությամբ: Խոշորացույցի տակ կարող եք տեսնել չիպի անունը. RTL8188EUS. Սա արդեն լավ է։ Որոշ ֆորումներում ես տեսա գրառումներ, որ նույն պարոն lwfinger-ի դրայվերը լավ է համապատասխանում այս չիպին (չնայած նա գրում է միայն RTL8188EU-ի մասին):
Մաս 2. Բորնի գերակայությունը
Ես ներբեռնում եմ վարորդների աղբյուրները Git-ից:
Ժամանակն է նորից տեղադրել Windows-ը և անել այն, ինչի հետ սովորաբար կապված են Linux-ի օգտատերերը՝ ինչ-որ բան հավաքել: Վարորդների հավաքումը, ինչպես պարզվում է, քիչ է տարբերվում ծրագրերը կազմելուց.
make
sudo make install
բայց միջուկի մոդուլներ կազմելու համար մեզ անհրաժեշտ են միջուկի վերնագրի ֆայլերը մեր կոնկրետ տարբերակի համար:
Բաժնետոմսերի պահեստում կա փաթեթ raspberrypi-kernel-headers, բայց այն պարունակում է ֆայլերի միջուկային տարբերակը 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-ն արագ գազան չէ (այն ունի 32 բիթ 900 ՄՀց 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
Բոնուս նրանց համար, ովքեր կարդում են մինչև վերջ
Հիշո՞ւմ եք, թե ինչպես ասացի, որ կարևոր չէ, թե ինչ առավելագույն արագություն է նշված ձեր ադապտերի վրա:
Այսպիսով, Malinka-ի վրա (մինչև 4-րդ մոդելի թողարկումը) բոլոր սարքերը (ներառյալ ethernet ադապտերը) նստում են նույն USB ավտոբուսի վրա: Հիանալի, ճիշտ է: Եվ, հետևաբար, USB ավտոբուսի թողունակությունը բաժանվում է դրա վրա գտնվող բոլոր սարքերի միջև: Արագությունը թե՛ ethernet-ի, թե՛ usb wi-fi-ի միջոցով (միացված 1 երթուղիչին) չափելիս թե՛ օդային, թե՛ լարով, այն եղել է մոտ 20 Մբիթ/վրկ։
Հ.Գ Ընդհանրապես, այս հատուկ ադապտերի համար դրայվեր կազմելու այս ուղեցույցը վավեր է ոչ միայն 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. Առաջարկվում է
Սայլակ
-
-
-
-
Source: www.habr.com