Äau Habr!
Reiz es nolÄmu savienot savu aveÅu ar internetu pa gaisu.
NekavÄjoties, Å”im nolÅ«kam tuvÄkajÄ veikalÄ iegÄdÄjos pazÄ«stamÄs kompÄnijas TP-Link usb wi-fi svilpi. Uzreiz teikÅ”u, ka tas nav kaut kÄds nano usb modulis, bet gan diezgan liela ierÄ«ce, apmÄram parasta zibatmiÅas diska izmÄrÄ (vai, ja vÄlaties, pieauguÅ”a vÄ«rieÅ”a rÄdÄ«tÄjpirksta lielumÄ). Pirms iegÄdes nedaudz izpÄtÄ«ju RPI atbalstÄ«to svilpes ražotÄju sarakstu un sarakstÄ bija arÄ« TP-Link (tomÄr kÄ vÄlÄk izrÄdÄ«jÄs smalkumus neÅÄmu vÄrÄ, jo velns, kÄ zinÄms , ir detaļÄs). TÄ nu sÄkas aukstÄ pasaka par maniem neveiksmÄm, piedÄvÄjam jÅ«su uzmanÄ«bai detektÄ«vstÄstu 3 daļÄs. Interesentus, lÅ«dzu, skatiet kat.
Pants
ProblÄmas apstÄkļi
Å emot vÄrÄ:
- vienplates dators Raspberry Pi 2 B v1.1 ā 1 gab
- usb wi-fi svilpe WN727N - 1 gab
- pÄris ne visai lÄ«ku roku - 2 gab
- JaunÄkÄ Raspbian versija ir instalÄta kÄ OS (pamatojoties uz Debian 10 Buster)
- kodola versija 4.19.73-v7+
Atrast: izveidojiet savienojumu ar internetu (Wi-Fi tiek izplatÄ«ts no jÅ«su mÄjas marÅ”rutÄtÄja)
PÄc adaptera izpakoÅ”anas es izlasÄ«ju instrukcijas iekÅ”pusÄ:
SistÄmas saderÄ«ba: Windows 10/8/7/XP (pat debesis, pat XP) un MacOS 10.9-10.13
Hmm, kÄ parasti, par Linux ne vÄrda. Bija 2k19, un draiveri vÄl bija jÄsamontÄ manuÄli...
Mums bija lÄ«dzi 2 kompilatori, 75 tÅ«kstoÅ”i bibliotÄku, piecas binÄras lÄses, puse kailu sievieÅ”u ar logotipu un vesela jÅ«ra visu valodu un marÄ·Äjumu virsrakstu. Tas nav nepiecieÅ”ams komplekts darbam. Bet, tiklÄ«dz jÅ«s sÄkat montÄt sistÄmu sev, to kļūst grÅ«ti apturÄt. VienÄ«gais, kas mani satrauca, bija wi-fi draiveri. Nav nekÄ bezpalÄ«dzÄ«gÄka, bezatbildÄ«gÄka un korumpÄtÄka kÄ draiveru veidoÅ”ana no pirmavota. Bet es zinÄju, ka agri vai vÄlu mÄs pÄriesim uz Å”o miskasti.
KopumÄ, kÄ jÅ«s zinÄt, niÄ·oties ar usb wi-fi operÄtÄjsistÄmÄ Linux ir sÄpÄ«gi un nedaudz bezgarŔīgi (kÄ krievu suÅ”i).
KastÄ«tÄ ir arÄ« kompaktdisks ar draiveriem. Es bez lielÄm cerÄ«bÄm skatos uz to, kas tajÄ atrodas - viÅi noteikti nav par to parÅ«pÄjuÅ”ies. MeklÄjot internetÄ, es nonÄku ražotÄja vietnÄ, taÄu tur ir Linux draiveris tikai ierÄ«ces pÄrskatÄ«Å”anai v4, un manÄs rokÄs bija v5.21. Un turklÄt ļoti vecÄm kodola versijÄm 2.6-3.16. PaÅ”Ä sÄkumÄ neveiksmes nomÄkts, es jau domÄju, ka vajadzÄja Åemt TL-WN727N (tas ir nedaudz dÄrgÄks un var izturÄt 300Mbps pret 150 manÄjam, bet, kÄ izrÄdÄ«jÄs, tam nav nekÄdas nozÄ«mes par avenÄm, par to tiks rakstÄ«ts vÄlÄk). Bet vissvarÄ«gÄkais ir tas, ka draiveri tam jau pastÄv un ir vienkÄrÅ”i instalÄti kÄ pakotne programmaparatÅ«ra-ralink. Parasti ierÄ«ces versiju varat skatÄ«t uz ierÄ«ces korpusa uz uzlÄ«mes blakus sÄrijas numuram.
TÄlÄkÄ googlÄÅ”ana un dažÄdu forumu apmeklÄÅ”ana neko labu nenesa. AcÄ«mredzot neviens pirms manis nav mÄÄ£inÄjis Å”Ädu adapteri pieslÄgt Linux. Hmm, man ir paveicies kÄ noslÄ«kuÅ”am cilvÄkam.
Lai gan, nÄ, meloju, arÄ« forumu apmeklÄÅ”ana (galvenokÄrt angļu valodÄ) nesa augļus, dažÄs tÄmÄs bija minÄts kÄds misters lwfinger, kurÅ” ir slavens ar to, ka uzrakstÄ«jis vairÄkus draiverus Wi-Fi adapteriem. . ViÅa git repozitorijs ir raksta beigÄs saitÄs. Un otrÄ mÄcÄ«ba, ko es uzzinÄju, ir tÄda, ka jums ir jÄidentificÄ jÅ«su ierÄ«ce, lai saprastu, kurÅ” draiveris tai varÄtu bÅ«t piemÄrots.
1. daļa: Borna identitÄte
Kad ierÄ«ce tika pievienota portam, protams, nedegÄs neviena gaismas diode. Un vispÄr nav skaidrs, vai kaut kas darbojas vai nÄ.
PirmkÄrt, lai noskaidrotu, vai kodols redz mÅ«su ierÄ«ci, es meklÄju 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
IzrÄdÄ«jÄs, ka redz, un ir pat skaidrs, ka usb kopnÄ ir Realtek mikroshÄma un paÅ”as ierÄ«ces VID/PID.
Ejam tÄlÄk un skatÄ«simies lsusb, un Å”eit mÅ«s sagaida vÄl viena neveiksme
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
SistÄma nezina, kÄda veida ierÄ«ce tÄ ir, un nekaunÄ«gi parÄda tukÅ”u vietu nosaukuma vietÄ (lai gan vendor=2357 noteikti ir TP-Link).
Å ajÄ posmÄ zinÄtkÄrais lasÄ«tÄjs, iespÄjams, jau ir pamanÄ«jis kaut ko interesantu, bet mÄs to atstÄsim lÄ«dz mÅ«su laikam.
PÄtot tukÅ”o nosaukumu problÄmu, es nonÄku vietnÄ ar identifikatoriem, kur tiek ievadÄ«ta informÄcija par zinÄmo VID/PID. MÅ«su 2357:0111 nebija. KÄ vÄlÄk izrÄdÄ«jÄs, lietderÄ«ba lsusb izmanto failu /usr/share/misc/usb.ids, kas ir tas pats Ŕīs vietnes ID saraksts. Displeja skaistuma labad es savÄ sistÄmÄ vienkÄrÅ”i pievienoju rindiÅas pÄrdevÄja TP-Link.
2357 TP-Link
0111 TL-WN727N v5.21
Labi, mÄs izlabojÄm displeju ierÄ«Äu sarakstÄ, taÄu tas mÅ«s nedeva ne soli tuvÄk draivera izvÄlei. Lai izvÄlÄtos draiveri, jums jÄzina, uz kura mikroshÄma ir izgatavota jÅ«su svilpe. NÄkamie neveiksmÄ«gie mÄÄ£inÄjumi to noskaidrot internetÄ ne pie kÄ laba nenoveda. BruÅojies ar plÄnu skrÅ«vgriezi ar rievÄm, es uzmanÄ«gi norauju adaptera vÄciÅu, un tÄvoÄa Liao ļaunais radÄ«jums parÄdÄs visÄ savÄ senatnÄ«gajÄ kailumÄ. Zem palielinÄmÄ stikla var redzÄt mikroshÄmas nosaukumu - RTL8188EUS. Tas jau ir labi. Dažos forumos es redzÄju ziÅas, ka draiveris no tÄ paÅ”a džentlmeÅa lwfinger ir labi piemÄrots Å”ai mikroshÄmai (lai gan viÅÅ” raksta tikai par RTL8188EU).
2. daļa: Borna pÄrÄkums
Es lejupielÄdÄju draiveru avotus no Git.
Ir pienÄcis laiks pÄrinstalÄt Windows un darÄ«t to, ar ko Linux lietotÄji parasti ir saistÄ«ti ā kaut ko salikt no sava veida. Draiveru salikÅ”ana, kÄ izrÄdÄs, maz atŔķiras no programmu kompilÄÅ”anas:
make
sudo make install
bet, lai kompilÄtu kodola moduļus, mums ir nepiecieÅ”ami kodola galvenes faili mÅ«su konkrÄtajai versijai.
KrÄjumu krÄtuvÄ ir iepakojums raspberrypi-kodolu-galvenes, bet tajÄ ir failu kodola versija 4.19.66-v7l+, un tas mums neder. Bet, lai iegÅ«tu vajadzÄ«gÄs versijas galvenes, kÄ izrÄdÄ«jÄs, ir Ärts rÄ«ks rpi-avots (saite beigÄs Github), ar kuru jÅ«s varat lejupielÄdÄt nepiecieÅ”amÄs galvenes. MÄs klonÄjam repozitoriju, padarÄm skriptu izpildÄmu un palaižam to. PirmÄ palaiÅ”ana neizdodas ar kļūdu - nav lietderÄ«bas bc. Par laimi, tas atrodas repozitorijÄ, un mÄs to vienkÄrÅ”i instalÄjam.
sudo apt-get install bc
PÄc tam restartÄÅ”ana un galveÅu lejupielÄde (un pÄc tam kaut kÄ iestatÄ«Å”ana, es tagad neatceros) aizÅem kÄdu laiku, un jÅ«s varat sÄdÄt krÄslÄ, Windows ir kļuvis labÄks visÄs tÄs izpausmÄs.
Kad visas galvenes ir lejupielÄdÄtas, pÄrbaudiet, vai tiek parÄdÄ«ts direktorijs /lib/modules/4.19.73-v7+ un tajÄ simboliskÄ saite norÄda uz vietu, kur atrodas lejupielÄdÄtie faili (man tas ir /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
SagatavoÅ”anas posms ir pabeigts, jÅ«s varat sÄkt montÄžu. AtkÄrtota moduļu salikÅ”ana prasa kÄdu laiku, Raspberry nav nekÄds Ätrs zvÄrs (tam ir 32bit 900Mhz Cortex ARM v7).
TÄtad viss apkopots. MÄs instalÄjam draiveri 2. solÄ« (make install), vienlaikus kopÄjot vairÄk programmaparatÅ«ras failu, kas nepiecieÅ”ami draivera darbÄ«bai:
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. daļa. Borna ultimÄts
IeslÄdzu svilpi portÄ un... nekas nenotiek. Vai tas viss bija par velti?
Es sÄku pÄtÄ«t failus projektÄ un vienÄ no tiem es atklÄju, kÄda bija problÄma: draiveris norÄda pilnu sarakstu ar VID/PID identifikatoriem, kurus tas var apkalpot. Un, lai mÅ«su ierÄ«ce darbotos ar Å”o draiveri, es failam vienkÄrÅ”i pievienoju savu 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 */
};
Es pÄrkompilÄju draiveri un pÄrinstalÄju to sistÄmÄ.
Un Å”oreiz viss sÄkÄs. IedegÄs adaptera indikators, un tÄ«kla saskarÅu sarakstÄ parÄdÄ«jÄs jauna ierÄ«ce.
Skatot bezvadu saskarnes, tiek parÄdÄ«ts:
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
Bonuss tiem, kas izlasīja līdz galam
Atcerieties, kÄ es teicu, ka nav svarÄ«gi, kÄds maksimÄlais Ätrums ir norÄdÄ«ts uz jÅ«su adaptera?
TÄtad MalinkÄ (pirms 4. modeļa izlaiÅ”anas) visas ierÄ«ces (ieskaitot Ethernet adapteri) atrodas vienÄ USB kopnÄ. Lieliski, vai ne? TÄpÄc usb kopnes joslas platums ir sadalÄ«ts starp visÄm tajÄ esoÅ”ajÄm ierÄ«cÄm. MÄrot Ätrumu gan caur ethernet, gan caur usb wi-fi (pieslÄgts 1 rÅ«terim) gan pa gaisu, gan pa vadu, tas bija ap 20Mbit/s.
PS KopumÄ Å”Ä« rokasgrÄmata draivera kompilÄÅ”anai Å”im konkrÄtajam adapterim ir derÄ«ga ne tikai RPI. PÄc tam es to atkÄrtoju savÄ darbvirsmÄ ar Linux Mint - arÄ« tur viss darbojÄs. Jums vienkÄrÅ”i jÄlejupielÄdÄ nepiecieÅ”amie galvenes faili savai kodola versijai tÄdÄ paÅ”Ä veidÄ.
UPD. ZinoÅ”i cilvÄki ieteica: lai nebÅ«tu atkarÄ«gs no kodola versijas, jums ir jÄsavÄc un jÄinstalÄ draiveri, izmantojot dkms. Å Ä« opcija ir iekļauta arÄ« draivera lasÄmmÄs.
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. IerosinÄts
atsauces
SÄkot no
SÄkot no
SÄkot no
SÄkot no
Avots: www.habr.com