Эй Хабр!
Бир жолу мен малинамды аба аркылуу интернетке туташтырууну чечтим.
Бул үчүн мен жакынкы дүкөндөн белгилүү TP-Link компаниясынан usb wi-fi ышкырын сатып алдым. Мен дароо айтам, бул кандайдыр бир нано USB модулу эмес, кадимки флэш-дисктин көлөмү (же кааласаңыз, бойго жеткен эркектин сөөмөйүнүн өлчөмү) жөнүндө абдан чоң түзүлүш. Сатып алуудан мурун мен RPI жана TP-Link үчүн колдоого алынган ышкырык өндүрүүчүлөрдүн тизмеси боюнча бир аз изилдөө жүргүздүм (бирок, кийинчерээк белгилүү болгондой, мен кылдаттыктарды эске алган жокмун, анткени шайтан, биз билгендей. , майда-чүйдөсүнө чейин). Ошентип, менин кырсыктарымдын муздак жомогу башталат, биз сиздердин назарыңыздарга 3 бөлүктөн турган детективди сунуштайбыз. Кызыккандар үчүн мышыкка кайрылыңыз.
макала
Проблеманын шарттары
Берилген:
- жалгыз такталуу компьютер Raspberry Pi 2 B v1.1 – 1 даана
- usb wi-fi ышкырыгы WN727N - 1 даана
- бир жуп эмес, кыйшык колдору - 2 даана
- Акыркы Raspbian OS катары орнотулган (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 менен алектенүү оорутуучу жана бир аз даамсыз (орус суши сыяктуу).
Кутуда ошондой эле драйверлери бар CD бар. Үмүтсүз эле мен анда эмне бар экенин карап жатам - алар сөзсүз түрдө кам көрүшкөн жок. Интернеттен издөө мени өндүрүүчүнүн веб-сайтына алып келди, бирок ал жерде түзмөктү кайра карап чыгуу үчүн гана Linux драйвери бар v4, жана менин колумда болчу v5.21. Мындан тышкары, ядронун абдан эски версиялары үчүн 2.6-3.16. Башында ишке ашпай калгандыктан көңүлүм чөгүп, мен TL-WN727N алсам керек деп ойлогом (ал бир аз кымбатыраак жана меники үчүн 300гө караганда 150 Мбит/сек ылдамдыкты көтөрө алат, бирок белгилүү болгондой, бул эч кандай мааниге ээ эмес. малина үчүн, бул тууралуу кийинчерээк жазылат). Бирок эң негизгиси, ал үчүн драйверлер бар жана жөн гана пакет катары орнотулган firmware-ralink. Аппараттын ревизиясын адатта сериялык номердин жанындагы чаптамадан көрө аласыз.
Андан ары гугл издөө жана ар кандай форумдарга баруу көп жакшылык алып келген жок. Мага чейин эч ким мындай адаптерди Linux менен туташтырууга аракет кылган эмес окшойт. Мм, мен чөгүп кеткен адамдай бактылуумун.
Жок, калп айтып жатам, форумдарга (негизинен англис тилдүү) баруу да өз жемишин берди, кээ бир темаларда Wi-Fi адаптерлери үчүн бир катар драйверлерди жазуу менен белгилүү болгон Lwfinger мырза жөнүндө сөз болгон. . Анын git репозиторийлери шилтемелердеги макаланын аягында. Ал эми мен үйрөнгөн экинчи сабак - бул үчүн кайсы драйвер ылайыктуу экенин түшүнүү үчүн түзмөгүңүздү аныктоо керек.
1-бөлүк: Bourne Identity
Аппарат портуна сайылганда, албетте, эч кандай 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 бар экени айкын болду.
Келгиле, андан ары барып карап көрөлү lsusb, жана бул жерде бизди дагы бир ийгиликсиздик күтүп турат
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 жок болчу. Кийинчерээк белгилүү болгондой, коммуналдык lsusb файлды колдонот /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-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бит 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 идентификаторлорунун толук тизмесин көрсөтөт. Жана биздин аппарат бул драйвер менен иштеши үчүн, мен жөн гана файлга өзүмдүн идентификаторумду коштум 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. Сунушталган
шилтемелер
-
-
-
-
Source: www.habr.com