Dèanamaid caraidean RaspberryPi le TP-Link TL-WN727N

Hi Habr!

Cho-dhùin mi aon uair mo shùbhan-craoibhe a cheangal ris an eadar-lìn thairis air an èadhar.

Cha bu luaithe a chaidh a ràdh na chaidh a dhèanamh, airson an adhbhar seo cheannaich mi fìdeag usb wi-fi bhon chompanaidh ainmeil TP-Link bhon stòr as fhaisge. Canaidh mi sa bhad nach e seòrsa de mhodal nano usb a tha seo, ach inneal gu math mòr, mu mheud draibheadh ​​​​flash cunbhalach (no, ma thogras tu, meud meur-chlàr fireannaich inbheach). Mus do cheannaich mi, rinn mi beagan rannsachaidh air an liosta de luchd-saothrachaidh fìdeag le taic airson RPI agus bha TP-Link air an liosta (ge-tà, mar a thàinig e a-mach nas fhaide air adhart, cha tug mi aire do na subtleties, oir bha an diabhal, mar a tha fios againn. , anns a’ mhion-fhiosrachadh). Mar sin, tha an sgeulachd fhuar mu na h-eucoirean agam a’ tòiseachadh; bidh sinn a’ toirt dhut sgeulachd lorg-phoileas ann an 3 pàirtean. Dhaibhsan aig a bheil ùidh, thoir sùil air cat.

Artaigil A’ ceangal an inneal-atharrachaidh WN727N WiFi ri Ubuntu/Mint Chuidich e mi gu ìre, ach a’ chiad rudan an-toiseach.

Cùmhnantan na trioblaid

Leis:

  1. coimpiutair bòrd singilte Raspberry Pi 2 B v1.1 - 1 pìos
  2. fìdeag usb wi-fi WN727N - 1 pìos
  3. paidhir de làmhan nach eil gu tur cam - 2 phìos
  4. Tha an Raspbian as ùire air a chuir a-steach mar an OS (stèidhichte air Debian 10 Buster)
  5. dreach kernel 4.19.73-v7+

Lorg: ceangail ris an eadar-lìn (tha Wi-Fi air a chuairteachadh bhon router dachaigh agad)

Às deidh dhomh an inneal-atharrachaidh a dhì-phapadh, leugh mi an stiùireadh a-staigh:

Co-fhreagarrachd an t-siostaim: Windows 10/8/7/XP (eadhon na speuran, eadhon XP) agus MacOS 10.9-10.13

Hmm, mar as àbhaist, chan e facal mu Linux. B' e 2k19 a bh' ann, agus dh'fheumadh na draibhearan fhathast a bhith air an cruinneachadh le làimh ...

Bha 2 neach-cruinneachaidh againn, 75 mìle leabharlann, còig bloban dà-chànanach, leth sreath de bhoireannaich rùisgte le suaicheantas agus muir slàn de chinn-cinn de gach cànan agus comharradh. Chan e gur e seata riatanach a tha seo airson na h-obrach. Ach aon uair ‘s gun tòisich thu a’ cruinneachadh siostam dhut fhèin, bidh e duilich stad. Is e an aon rud a chuir dragh orm na draibhearan airson wi-fi. Chan eil dad nas neo-chomasach, neo-chùramach agus coirbte na bhith a’ togail dhraibhearan bhon tùs. Ach bha fios agam gum biodh sinn luath no mall a’ tionndadh chun sgudal seo.

San fharsaingeachd, mar a tha fios agad, tha fìdhlearachd le usb wi-fi air Linux pianail agus beagan gun blas (mar sushi Ruiseanach).

Tha CD le draibhearan anns a’ bhogsa cuideachd. Gun mòran dòchais gun toir mi sùil air na tha air - gu cinnteach cha do ghabh iad cùram dheth. Thug sgrùdadh eadar-lìn mi gu làrach-lìn an neach-dèanamh, ach tha draibhear Linux ann dìreach airson ath-sgrùdadh inneal v4, agus a'm' uchd bha v5.21. Agus a bharrachd air an sin, airson dreachan kernel fìor sheann 2.6-3.16. Air mo mhisneachadh leis an fhàiligeadh aig an fhìor thoiseach, shaoil ​​​​mi mu thràth gum bu chòir dhomh a bhith air an TL-WN727N a ghabhail (tha e beagan nas daoire agus is urrainn dhomh 300Mbps an aghaidh 150 a làimhseachadh dhòmhsa, ach mar a thionndaidh e a-mach, chan eil seo gu diofar. airson an sùbh-craoibhe, thèid seo a sgrìobhadh mu dheidhinn nas fhaide air adhart). Ach is e an rud as cudromaiche gu bheil draibhearan air a shon ann mu thràth agus gu bheil iad dìreach air an stàladh mar phacaid firmware-ralink. Mar as trice chì thu ath-sgrùdadh an uidheim air corp an inneil air stiogair ri taobh an àireamh sreathach.

Cha tug tuilleadh googling agus tadhal air diofar fhòraman mòran math. A rèir choltais chan eil duine romham air feuchainn ri inneal-atharrachaidh mar sin a cheangal ri Linux. Hmm, tha mi cho fortanach ri duine a chaidh a bhàthadh.

Ged, chan e, tha mi nam laighe, thug tadhal air fòraman (an fheadhainn Beurla sa mhòr-chuid) toradh cuideachd; ann an cuid de chuspairean chaidh iomradh a thoirt air Mgr lwfinger sònraichte, a tha ainmeil airson a bhith a’ sgrìobhadh grunn dhràibhearan airson innealan-atharrachaidh Wi-Fi . Tha an stòr git aige aig deireadh an artaigil anns na ceanglaichean. Agus is e an dàrna leasan a dh’ ionnsaich mi gum feum thu an inneal agad a chomharrachadh gus tuigsinn dè an draibhear a dh’ fhaodadh a bhith freagarrach air a shon.

Pàirt 1: Dearbh-aithne Bourne

Nuair a chaidh an inneal a chuir a-steach don phort, gu dearbh, cha do lasadh LED sam bith. Agus san fharsaingeachd chan eil e soilleir ann an dòigh sam bith a bheil rudeigin ag obair no nach eil.

An toiseach, gus faighinn a-mach a bheil an kernel a ’faicinn an inneal againn, bidh mi a’ coimhead ann an 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

Thionndaidh e a-mach gu bheil e a ’faicinn, agus tha e eadhon soilleir gu bheil chip Realtek agus VID / PID den inneal fhèin air a’ bhus usb.

Rachamaid nas fhaide agus coimhead lsusb, agus an seo tha fàiligeadh eile a’ feitheamh oirnn

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

Chan eil fios aig an t-siostam dè an seòrsa inneal a th’ ann, agus tha e gu tur a’ sealltainn àite falamh an àite an ainm (ged a tha reiceadair = 2357 gu cinnteach na TP-Link).

Aig an ìre seo, is dòcha gu bheil an leughadair fiosrachail air rudeigin inntinneach fhaicinn mu thràth, ach fàgaidh sinn e gus an àm againn.

Thug rannsachadh air duilgheadas ainmean falamh mi gu làrach le aithnichearan, far a bheil fiosrachadh air VID/PID aithnichte air a chur a-steach. Cha robh an 2357:0111 againn ann. Mar a thionndaidh e a-mach nas fhaide air adhart, an goireas lsusb a’ cleachdadh faidhle /usr/share/misc/usb.ids, a tha san aon liosta de IDan bhon làrach seo. Airson bòidhchead an taisbeanaidh, chuir mi dìreach loidhnichean ris airson an neach-reic TP-Link anns an t-siostam agam.

2357  TP-Link
        0111  TL-WN727N v5.21

Uill, cheartaich sinn an taisbeanadh anns an liosta innealan, ach cha tug e sinn aon cheum nas fhaisge air a bhith a’ taghadh draibhear. Gus dràibhear a thaghadh, feumaidh fios a bhith agad air dè an sgiob a tha do fhìdeag air a dhèanamh. Cha do lean na h-ath oidhirpean neo-shoirbheachail gus seo a lorg air an eadar-lìn gu dad math. Armaichte le screwdriver slotted tana, bidh mi gu faiceallach a’ toirt dheth a’ chaip adapter agus tha beachd borb Uncle Liao a’ nochdadh anns a h-uile lomnochd phrìseil. Fo ghlainne-meudachaidh chì thu ainm a’ chip - RTL8188EUS. Tha seo math mu thràth. Air cuid de fhòraman chunnaic mi puist gu bheil an draibhear bhon aon duine-uasal lwfinger sin gu math freagarrach airson a ’chip seo (ged nach eil e a’ sgrìobhadh ach mu RTL8188EU).

Pàirt 2: The Bourne Supremacy

Bidh mi a’ luchdachadh sìos stòran an draibhear bho Git.

Tha an t-àm ann Windows ath-shuidheachadh agus dèan na tha luchd-cleachdaidh Linux mar as trice co-cheangailte riutha - a’ cruinneachadh rudeigin de sheòrsa air choreigin. Chan eil cruinneachadh dhràibhearan, mar a thionndaidh e, glè bheag bho bhith a’ cur ri chèile phrògraman:

make
sudo make install

ach airson modalan kernel a chuir ri chèile feumaidh sinn na faidhlichean cinn kernel airson an dreach sònraichte againn.

Tha pasgan anns an stòr stoc cinn-cinn raspberrypi-kernel, ach tha an tionndadh kernel de na faidhlichean ann 4.19.66-v7l+, agus chan eil sin freagarrach dhuinn. Ach gus cinn-cinn an dreach a tha a dhìth fhaighinn, mar a thàinig e a-mach, tha inneal goireasach ann rpi-stòr (ceangal aig an deireadh air Github), leis an urrainn dhut na cinn-cinn riatanach a luchdachadh sìos. Bidh sinn a’ clonadh an stòr, a’ dèanamh an sgriobt so-ghnìomhaichte, agus ga ruith. Bidh a’ chiad fhoillseachadh a’ fàiligeadh le mearachd - chan eil goireas ann bc. Gu fortanach, tha e san stòr agus tha sinn dìreach ga stàladh.

sudo apt-get install bc

Às deidh seo, bheir ath-thòiseachadh agus luchdachadh sìos na cinn-cinn (agus an uairsin rudeigin a chuir air dòigh, chan eil cuimhne agam a-nis) beagan ùine agus faodaidh tu suidhe air ais sa chathair agad, tha Windows air fàs nas fheàrr anns a h-uile taisbeanadh.

Às deidh a h-uile bann-cinn a luchdachadh sìos, dèan cinnteach gu bheil an eòlaire a’ nochdadh /lib/modules/4.19.73-v7+ agus innte tha an symlink a’ comharrachadh an àite far a bheil na faidhlichean a chaidh a luchdachadh sìos (dhòmhsa is e / home/pi/linux a th’ ann):

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

Tha an ìre ullachaidh air a chrìochnachadh, faodaidh tu tòiseachadh air co-chruinneachadh. Bheir a bhith a’ cruinneachadh nam modalan a-rithist beagan ùine, chan e beathach luath a th’ anns an sùbh-craoibhe (tha 32bit 900Mhz Cortex ARM v7 aige).
Mar sin chaidh a h-uile càil a chuir ri chèile. Bidh sinn a 'stàladh an dràibhear san dàrna ceum (dèan stàladh), agus sinn a' dèanamh lethbhreac de na faidhlichean firmware a tha riatanach airson an dràibhear a bhith ag obair:

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

Pàirt 3. The Bourne Ultimatum

Bidh mi a' cur an fhìdeag dhan phort agus... chan eil dad a' tachairt. An robh e uile airson dad?

Bidh mi a 'tòiseachadh a' sgrùdadh nam faidhlichean taobh a-staigh a 'phròiseict agus ann am fear dhiubh tha mi a' faighinn a-mach dè an duilgheadas a bh 'ann: tha an dràibhear a' sònrachadh liosta iomlan de dh'aithnichearan VID/PID as urrainn dha a fhrithealadh. Agus gus am bi an inneal againn ag obair leis an draibhear seo, chuir mi dìreach an id agam ris an fhaidhle 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 */
};

Rinn mi ath-chruinneachadh air an dràibhear agus chuir mi a-rithist e air an t-siostam.

Agus an turas seo thòisich a h-uile càil. Chaidh an solas air an inneal-atharrachaidh a lasadh suas agus nochd inneal ùr anns an liosta de eadar-aghaidh lìonra.

Tha coimhead air eadar-aghaidh gun uèir a’ sealltainn na leanas:

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

Bonus dhaibhsan a leugh gu deireadh

Cuimhnich mar a thuirt mi nach eil e gu diofar dè an astar as àirde a tha air a ràdh air an inneal-atharrachaidh agad?
Mar sin, air Malinka (mus tèid modal 4 a leigeil ma sgaoil), bidh a h-uile inneal (a ’toirt a-steach an adapter ethernet) nan suidhe air an aon bhus usb. Sgoinneil, ceart? Agus mar sin tha leud-bann a’ bhus usb air a roinn eadar a h-uile inneal air. Nuair a chaidh an astar a thomhas an dà chuid tro ethernet agus tro usb wi-fi (ceangailte ri 1 router) an dà chuid le èadhar agus le uèir, bha e timcheall air 20Mbit/s.

PS San fharsaingeachd, tha an stiùireadh seo airson dràibhear a chuir ri chèile airson an inneal-atharrachaidh sònraichte seo dligheach chan ann a-mhàin airson RPI. Rinn mi a-rithist e air an deasg agam le Linux Mint - dh’ obraich a h-uile dad an sin cuideachd. Feumaidh tu dìreach na faidhlichean cinn riatanach a luchdachadh sìos airson an dreach kernel agad san aon dòigh.

UPD. Mhol daoine eòlach: gus nach bi iad an urra ris an dreach kernel, feumaidh tu draibhearan a chruinneachadh agus a stàladh a ’cleachdadh dkms. Tha an roghainn seo cuideachd anns an readme airson an draibhear.

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. Air a mholadh paiste airson inneal id chaidh gabhail a-steach don mheur prìomh-shruthach den stòr lwfinger/rtl8188eu.

iomraidhean
- Adapters Wi-Fi USB RPi
- Gitbub lwfinger/rtl8188eu
- usb.ids
- rpi-stòr

Source: www.habr.com