Përshëndetje, Habr!
Nisa e mendova të lidha mini-computer-in tim me internetin pa wire.
Thënë e bërë, për këtë kam blerë një usb wi-fi dongle nga kompania e njohur TP-Link. Të jem i sinqertë, kjo nuk është një modul usb nano, por një pajisje mjaft e madhe, afërsisht sa një USB flash (ose nëse e preferoni, sa gishti i tregues i një burri të rritur). Para blerjes, nisa të studioj listën e prodhuesve të mbështetur për dongle-t për RPI dhe TP-Link ishte në listë (megjithatë, siç u kuptua më vonë, nuk e konsiderova disa hollësi, sepse djalli, siç dihet, fshihet në detaje). Pra, treshi i aventurave të mia fillon, ju ofrohet një histori detektivi në 3 pjesë. Ata që janë të interesuar, ju lutem, hidhni një sy poshtë.
Artikulli më ndihmoi pjesërisht, por le të fillojmë nga fillimi.
Kushtet e detyrës
E dhënë:
- njĂ« kompjuter me njĂ« plakat Raspberry Pi 2 B v1.1 â 1 copĂ«
- usb wi-fi dongle WN727N â 1 copĂ«
- njĂ« çift duarish jo plotĂ«sisht tĂ« devijuar â 2 copĂ«
- si sistem operativ është instaluar Raspbian më i fundit (i bazuar në debian 10 Buster)
- në versionin e kernelit 4.19.73-v7+
Gjej: realizoni lidhjen me internetin (wi-fi vjen nga router-i i shtëpisë)
Pas shpërbërjes së adaptorit, lexoj udhëzimin brenda:
Përputhshmëria e Sistemit: Windows 10/8/7/XP (madje dhe XP) dhe MacOS 10.9-10.13
Eh, në lidhje me Linux nuk kishte asnjë fjalë. Po kalonte viti 2019, dhe ende duhej të mbledhja drejtorët manualisht...
I kishim me vete 2 kompilatorë, 75 mijë biblioteka, pesë blloqe binarë, një gjysmë matrice femrash me logo dhe një det i tërë header-ash të të gjitha gjuhëve dhe markup-i. Nuk ishte se ky ishte një grup i nevojshëm për punë. Por sapo fillon të mbledhësh sistemin sipas dëshirave të tua, bëhet e vështirë të ndalosh. E vetmja gjë që më shqetësonte ishte drejtori për wi-fi. Nuk ka gjë më të pafuqishme, më të pa përgjegjshme dhe të prishur, sesa mbledhja e drejtuesve nga burimet. Por e dija që më herët apo më vonë do të kalonim edhe në këtë gjë.
Në përgjithësi, siç dihet, meraku me usb wi-fi në linux është i dhimbshëm dhe disi i pakëndshëm (si sushi rus).
NĂ« kutinĂ« gjendet gjithashtu njĂ« CD me drejtues. Pa ndonjĂ« shpresĂ« tĂ« veçantĂ«, shikoj se çfarĂ« ka â saktĂ«sisht, nuk u kujdesĂ«n. KĂ«rkimi nĂ« internet mĂ« drejtoi nĂ« faqen e prodhuesit, por aty kishte vetĂ«m drejtues linux pĂ«r revizionin e pajisjes v4, dhe unĂ« kisha nĂ« duar v5.21. Dhe pĂ«r mĂ« tepĂ«r, pĂ«r versionet shumĂ« tĂ« vjetra tĂ« bĂ«rthamĂ«s 2.6-3.16. TĂ« pĂ«rgjumur nga dĂ«shtimi qĂ« ndodhi nĂ« fillim, mendova se kishte qenĂ« mĂ« mirĂ« tĂ« merrja TL-WN727N (ai Ă«shtĂ« pak mĂ« i shtrenjtĂ« dhe mbĂ«shtet 300Mbps krahas 150 tĂ« timit, por siç u duk, pĂ«r Raspberry nuk kishte rĂ«ndĂ«si fare, pĂ«r kĂ«tĂ« do tĂ« flas mĂ« vonĂ«). Por mĂ« e rĂ«ndĂ«sishmja Ă«shtĂ« se driverat pĂ«r tĂ« tashmĂ« ekzistojnĂ« dhe instalohen lehtĂ« pĂ«rmes paketĂ«s firmware-ralink. TĂ« kontrollosh revizionin e pajisjes zakonisht mund tĂ« bĂ«het nĂ« trupin e saj nĂ« etiketen pranĂ« numrit serial.
Gjirimi i mëtejshëm dhe vizita në forume të ndryshme nuk sollën asgjë të mirë. Dukesh se askush përpara meje nuk kishte provuar të lidhte një adaptues të tillë në Linux. Po, më shihet si më e keqja që kam.
Megjithatë, jo, gënjej, vizita në forume (përgjithësisht në gjuhë angleze) gjithashtu dha rezultatet e veta; në disa tema u përmend një zotëri i quajtur lwfinger, i cili është i njohur për atë që ka shkruar një numër driverash për adaptuesit Wi-Fi. Repozita e tij në GitHub është në fund të artikullit, në lidhje. Dhe mësimi i dytë që mësova është se duhet të identifikosh pajisjen tënde, për të kuptuar se cili driver mund t'i përshtatet.
Pjesa 1. Identifikimi i Bordit
Kur lidha pajisjen në port, asnjë LED nuk u ndez. Dhe ndonjëherë nuk është e qartë nëse diçka funksionon apo jo.
Së pari, për të kuptuar nëse bërthama sheh pajisjen tonë, shikoj në dmesg:
[ 965.606998] usb 1-1.3: pajisje e re USB me shpejtësi të lartë numri 9 duke përdorur dwc_otg
[ 965.738195] usb 1-1.3: Pajisje e re USB e gjetur, idVendor=2357, idProduct=0111, bcdDevice= 0.00
[ 965.738219] usb 1-1.3: Fjalët e pajisjes USB: Mfr=1, Produkt=2, NumriSerial=3
[ 965.738231] usb 1-1.3: Produkt: 802.11n NIC
[ 965.738243] usb 1-1.3: Prodhuesi: Realtek
[ 965.738255] usb 1-1.3: NumriSerial: 00E04C0001
U zbuluar se po e sheh dhe madje është e qartë se çipi është Realtek dhe VID/PID e pajisjes në linjën USB.
Shkojmë përpara, shikojmë lsusb, dhe këtu na pret një tjetër dështim
Bus 001 Pajisja 008: ID 2357:0111
Bus 001 Pajisja 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Përshtatës Ethernet i Shpejtë
Bus 001 Pajisja 002: ID 0424:9514 Standard Microsystems Corp. SMC9514 Hub
Bus 001 Pajisja 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Sistemi nuk e di se çfarë është kjo pajisje dhe turpërohet që tregon një vend të zbrazët në vend të emrit (ndonëse vendor=2357 është padyshim TP-Link).
Në këtë fazë, ndoshta lexuesi kurioz ka vënë re diçka interesante, por ne do ta lëmë atë për një tjetër herë.
Hulumtimi mbi problemin e emrave të zbrazët më çoi në një faqe me identifikues, ku regjistrohet informata për VID/PID të njohura. Tani, 2357:0111 nuk ishte aty. Siç u zbuluar më vonë, utilita lsusb përdor një skedar /usr/share/misc/usb.ids, i cili është e njëjta listë identifikuesish nga ky site. Për një pamje më të bukur, unë thjesht kam shtuar në sistemin tim rreshtat për treguesin TP-Link.
2357 TP-Link
0111 TL-WN727N v5.21
PĂ«rmirĂ«suam shfaqjen nĂ« listĂ«n e pajisjeve, por kjo nuk na afroi asnjĂ« hap mĂ« pranĂ« zgjedhjes sĂ« drivarit. PĂ«r tĂ« zgjedhur drivar, duhet tĂ« dihet se nĂ« cilin çip Ă«shtĂ« bĂ«rĂ« ky adapter. PĂ«rpjekjet e pĂ«rsĂ«ritura pĂ«r tĂ« mĂ«suar kĂ«tĂ« nĂ« internet nuk kanĂ« sjellĂ« asgjĂ« tĂ« mirĂ«. Duke u armatosur me njĂ« screwdriver tĂ« hollĂ«, me kujdes e heq kapakun e adapterit dhe para meje shfaqet nĂ« gjithĂ« lakuriqĂ«sinĂ« e saj fĂ«mija i prindit Liao. NĂ«n lupĂ«, mund tĂ« shqyrtohet emri i çipit â RTL8188EUS. Kjo Ă«shtĂ« e mirĂ«. NĂ« disa forume kam parĂ« postime qĂ« pĂ«r kĂ«tĂ« çip pĂ«rshtatet shumĂ« mirĂ« drivari i atij zotit lwfinger (ndonĂ«se aty thuhet vetĂ«m pĂ«r RTL8188EU).
Pjesa 2. Superioriteti i Bornit
Po shkarkoj burimet e drivarit nga gita.
Ka ardhur koha tĂ« rinstalohet windows dhe tĂ« merremi me atĂ« qĂ« zakonisht lidhet me linuksianĂ«t â ndĂ«rtimin e diçkaje nga burimet. NdĂ«rtimi i drivarĂ«ve, siç u duk, nuk ndryshon shumĂ« nga kompajlimi i programeve:
make
sudo make install
por për kompajlimin e moduleve të bërthamës na duhen skedarët e titujve të bërthamës për versionin tonë specifik.
NĂ« depozitĂ«n standarde ka njĂ« paketĂ« raspberrypi-kernel-headers, por ajo pĂ«rmban versionin e skedarĂ«ve pĂ«r bĂ«rthamĂ«n 4.19.66-v7l+, dhe kjo nuk na pĂ«rshtatet. Por pĂ«r tĂ« marrĂ« titujt e nevojshĂ«m, siç u zbulua, ka njĂ« mjet tĂ« pĂ«rshtatshĂ«m rpi-source (linku nĂ« fund nĂ« github), me tĂ« cilin mund tĂ« shkarkoni titujt e nevojshĂ«m. KlonojmĂ« depozitarin, e bĂ«jmĂ« skriptin ekzekutues dhe e lançojmĂ«. Lançimi i parĂ« dĂ«shton me njĂ« gabim â nuk ka utilitarin. bcNĂ« fat tĂ« mirĂ«, ai Ă«shtĂ« nĂ« depo dhe thjesht e instalojmĂ«.
sudo apt-get install bc
Pas kësaj, lançimi i dytë dhe shkarkimi i titujve (dhe pastaj konfigurimi i diçkaje, tani nuk e mbaj mend) zgjat pak, dhe mund të lehtësosh në karrige, windows është bërë më mirë në të gjitha manifestimet e saj.
Pasi të shkarkohen të gjithë titujt, kontrolloni që të ketë një katalog /lib/modules/4.19.73-v7+ dhe në të ka një simlink që tregon vendin ku ndodhen skedarët e shkarkuar (për mua kjo është /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
Faza përgatitore ka përfunduar, tani mund të fillojmë montimin. Montimi i moduleve merr përsëri një kohë të caktuar, RaspBerry nuk është një makinë e shpejtë (ka një procesor 32bit 900Mhz Cortex ARM v7).
Kështu, gjithçka është kompiluar. Po instalojmë drejtuesin në hapin 2 (make install), gjatë kësaj bëhet gjithashtu kopjimi i disa skedarëve firmware që janë të nevojshme për funksionimin e drejtuesit:
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/.
Pjesa 3. Ultimatum i Bornit
Fut pamjen në port dhe... asgjë nuk ndodh. A ishte gjithçka kot?
Filloj të studioj skedarët brenda projektit dhe në njërin prej tyre gjej se ku ishte problemi: drejtuesi tregon një listë të plotë të identifikuesve VID/PID që mund të shërbejë. Dhe për të bërë që pajisja jonë të funksionojë me këtë drejtues, unë thjesht e shtova ID-në time në skedarin 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 */
/*=== Identifikuesi i klientit ===*/
/****** 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 */
};
Rikompilova drejtuesin dhe e instalova sërish në sistem.
Dhe këtë herë gjithçka funksionoi. Drita në adaptues nisi të ndizet dhe në listën e ndërfaqeve rrjet të reja u shfaq një pajisje e re.
Shikimi i ndërfaqeve pa tel tregon se:
pi@raspberrypi:/home/pi/rtl8188eu# iwconfig
eth0 nuk ka zgjerime pa tel.
lo nuk ka zgjerime pa tel.
wlan0 pa lidhje ESSID:"" Pseudonim:""
Mode:Auto Frekuenca=2.412 GHz Pikë Qasjeje: Pa-Lidhje
Ndjeshmëri:0/0
Përsëritje:jo RTS thr:jo Fragment thr:jo
ĂelĂ«si i enkriptimit:jo
Menaxhimi i Energjisë:jo
Cilësia e Lidhjes=0/100 Niveli i sinjalit=0 dBm Niveli i zhurmës=0 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx përsëritje të tepërta:0 Invalid misc:0 Mungesë beakoni:0
Bonus për ata që e lexuan deri në fund
A kujtoni si thashë se nuk ka rëndësi cila është shpejtësia maksimale e deklaruar për adaptorin tuaj?
Sigurisht, në Raspberry Pi (deri në daljen e modelit 4), të gjitha pajisjet (përfshirë adaptorin ethernet) janë të lidhura në një autobus USB. E mrekullueshme, apo jo? Prandaj, kapaciteti i autobusit USB ndahet midis të gjitha pajisjeve që janë të lidhura. Gjatë matjes së shpejtësisë përmes ethernetit, dhe përmes USB Wi-Fi (të dyja të lidhura në një router), si përmes ajrit, ashtu edhe me kabllo, rezultati ishte rreth 20Mbit/s.
P.S. NĂ« tĂ« vĂ«rtetĂ«, ky udhĂ«zues pĂ«r kompilimin e driverit pĂ«r kĂ«tĂ« adaptorin specifik Ă«shtĂ« i vlefshĂ«m jo vetĂ«m pĂ«r RPI. UnĂ« e pĂ«rsĂ«rita atĂ« edhe nĂ« desktopin tim me Linux Mint â gjithashtu aty funksionoi. Thjesht ju duhen tĂ« shkarkoni skedarĂ«t e nevojshĂ«m tĂ« titujve pĂ«r versionin e pĂ«rdorur tĂ« kernelit tuaj.
UPD. Njerëzit që e dinë sugjeruan: për të mos u mbështetur në versionin e kernelit, duhet ndërtuar dhe instaluar driverët duke përdorur dkms. Ky opsion është gjithashtu i përfshirë në readme-n e driverit.
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. Propozimi për ID-në e pajisjes u pranua në degën kryesore të depoit lwfinger/rtl8188eu.
Linket
â
â
â
â
Burimi: habr.com
