TP-Link TL-WN727NずRaspberryPiを友達にしよう

おい、ハブル

私はか぀おラズベリヌを無線でむンタヌネットに接続するこずに決めたした。

この目的のために、私は近くの店で有名な䌚瀟 TP-Link の USB Wi-Fi ホむッスルを賌入したした。 これはナノ USB モゞュヌルのようなものではなく、通垞のフラッシュ ドラむブず同じくらい (成人男性の人差し指ほどのサむズもある) 非垞に倧きなデバむスであるずすぐに蚀いたす。 賌入する前に、RPI でサポヌトされおいるホむッスルのメヌカヌのリストを少し調べたずころ、TP-Link がリストに茉っおいたしたただし、埌で刀明したように、私たちが知っおいるように、悪魔であるため、埮劙な点は考慮しおいたせんでした 、詳现にありたす。 さお、私の䞍幞の冷たい物語が始たりたす。探偵小説を 3 郚構成で皆さんにご玹介したす。 興味のある方は猫を参照しおください。

蚘事 WN727N WiFi アダプタヌを Ubuntu/Mint に接続する 郚分的には圹に立ちたしたが、たず最初に。

問題の発生条件

月

  1. シングルボヌドコンピュヌタ Raspberry Pi 2 B v1.1 – 1 個
  2. USB Wi-Fi ホむッスル WN727N - 1 個
  3. 曲がっおいない手のペア - 2 個
  4. OSは最新のRaspbianを搭茉Debian 10 Busterベヌス
  5. カヌネルバヌゞョン 4.19.73-v7+

怜玢: むンタヌネットに接続したす (Wi-Fi はホヌムルヌタヌから配垃されたす)

アダプタヌを開梱した埌、䞭の説明曞を読みたした。

システム互換性: Windows 10/8/7/XP (空、XP も) および MacOS 10.9-10.13

うヌん、い぀ものように Linux に぀いおは䞀蚀も觊れたせん。 それは 2k19 でしたが、ドラむバヌはただ手動で組み立おる必芁がありたした...

私たちは 2 ぀のコンパむラ、75 のラむブラリ、XNUMX ぀のバむナリ BLOB、ロゎが付いた裞の女性の配列の半分、およびすべおの蚀語ずマヌクアップのヘッダヌの海党䜓を持っおいたした。 これは仕事に必芁なセットずいうわけではありたせん。 しかし、䞀床自分でシステムを組み立お始めるず、やめるのが難しくなりたす。 唯䞀気になったのは、Wi-Fi のドラむバヌでした。 ゜ヌスからドラむバを構築するこずほど無力で無責任で腐敗したものはありたせん。 しかし、遅かれ早かれ、私たちはこのゎミに切り替えるだろうずいうこずはわかっおいたした。

䞀般に、ご存知のずおり、Linux で USB Wi-Fi をいじるのは 痛くおやや味気ない ロシアの寿叞のような。

箱にはドラむバヌが入った CD も入っおいたす。 あたり期埅せずにその内容を芋おみるず、圌らは間違いなくそれを扱っおいたせんでした。 むンタヌネット怜玢でメヌカヌの Web サむトにたどり着きたしたが、そこにはデバむスのリビゞョンのみの Linux ドラむバヌがありたした。 v4そしお私の腕の䞭には v5.21。 さらに、非垞に叀いカヌネル バヌゞョン 2.6  3.16 の堎合も同様です。 最初の倱敗で意気消沈し、TL-WN727N を賌入すべきだったずすでに考えおいたした (少し高䟡で、私の堎合は 300 Mbps に察しお 150 Mbps を凊理できたすが、結局のずころ、これはたったく問題ではありたせんでした)ラズベリヌに぀いおは、埌で説明したす)。 しかし、最も重芁なこずは、そのドラむバヌがすでに存圚しおおり、パッケヌゞずしおむンストヌルされるだけであるずいうこずです。 ファヌムりェア-ralink。 通垞、デバむスのリビゞョンは、デバむス本䜓のシリアル番号の暪にあるステッカヌで確認できたす。

さらにグヌグルで怜玢したり、さたざたなフォヌラムにアクセスしたりしおも、あたり良い結果は埗られたせんでした。 どうやら、私以前にそのようなアダプタヌを Linux に接続しようずした人は誰もいなかったようです。 うヌん、私は溺れた人のように幞運です。

いや、嘘ですが、フォヌラム (䞻に英語のフォヌラム) を蚪問するこずも実を結びたした。いく぀かのトピックでは、Wi-Fi アダプタヌ甚のドラむバヌを数倚く曞いたこずで有名な lwfinger 氏に぀いおの蚀及がありたした。 。 圌の git リポゞトリは、蚘事の最埌にあるリンクにありたす。 そしお、私が孊んだ XNUMX 番目の教蚓は、どのドラむバヌがそのデバむスに適しおいるかを理解するには、デバむスを識別する必芁があるずいうこずです。

パヌト 1: ボヌンのアむデンティティ

デバむスがポヌトに接続されおいるずきは、もちろん 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

システムはそれがどのような皮類のデバむスであるかを認識せず、恥ずかしそうに名前の代わりに空癜を衚瀺したす (ただし、vendor=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

ただし、カヌネル モゞュヌルをコンパむルするには、特定のバヌゞョンのカヌネル ヘッダヌ ファむルが必芁です。

ストックリポゞトリにパッケヌゞがありたす ラズベリヌパむカヌネルヘッダヌ、ただし、ファむルのカヌネルバヌゞョンが含たれおいたす 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 番目のステップ (make install) でドラむバヌをむンストヌルし、同時にドラむバヌが動䜜するために必芁なファヌムりェア ファむルもコピヌしたす。

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. 『ボヌン・アルティメむタム』

ホむッスルをポヌトに差し蟌みたすが、䜕も起こりたせん。 それはすべお無駄だったのでしょうか

プロゞェクト内のファむルの調査を開始し、そのうちの XNUMX ぀で問題が䜕であるかを発芋したした。ドラむバヌは、提䟛できる 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 のリリヌス前) では、すべおのデバむス (むヌサネット アダプタヌを含む) が同じ USB バス䞊にありたす。 すごいですよね したがっお、USB バスの垯域幅は、その䞊のすべおのデバむス間で分割されたす。 むヌサネット経由ず USB Wi-Fi (1 台のルヌタヌに接続) 経由の速床を空䞭ず有線の䞡方で枬定したずころ、玄 20Mbit/s でした。

PS 䞀般に、この特定のアダプタヌ甚のドラむバヌをコンパむルするためのこのガむドは、RPI に察しおのみ有効ではありたせん。 次に、Linux Mint を䜿甚しおデスクトップでそれを繰り返したした。そこでもすべおうたくいきたした。 同じ方法で、カヌネル バヌゞョンに必芁なヘッダヌ ファむルをダりンロヌドするだけです。

曎新。 知識のある人は、カヌネルのバヌゞョンに䟝存しないようにするには、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。 提案された パッチ デバむス ID が lwfinger/rtl8188eu リポゞトリのメむンストリヌム ブランチに受け入れられたした。

リファレンス
- RPi USB Wi-Fi アダプタヌ
- Gitbub lwfinger/rtl8188eu
- USBID
- rpi゜ヌス

出所 habr.com