Debian Linux 11で無線WiFiモジュール・TP-Link TL-WN725Nをセットアップするやり方


2022/02/26
2022/04/11
蛸壺の中の工作室|Debian Linux 11で無線WiFiモジュール・TP-Link TL-WN725Nをセットアップするやり方

LinuxデスクトップでWiFi接続をしたい場合に、USBドンクルタイプのWiFiクライアント子機を簡単に接続できる時代になりました。

今回はAmazonでも廉価で購入できる代表的なTP-Link製のUSB2.0準規の外付けWiFiモジュール・
『TL-WN725N』を、現行のDebianの最新ディストリビューションであるv11でセットアップしたときのメモです。


高すぎるラズパイ4の代わりにジャンクPCを使う

新型コロナ感染症による世界的な半導体部品の供給不足から、この数年でベアメタルを含むシングルボードコンピュータ製品が品薄で、価格もかなりの高騰した状態で推移しています。

このブログでも度々ラズパイなどの応用をテーマとした技術記事を紹介していますが、Amazonなどで現在のラズパイ4(メモリ4GBモデル)を覗くと、

合同会社タコスキングダム|蛸壺の中の工作室

と大体コロナ前の2倍以上の価格になっています。

この価格を考えると安いスマホと大差ないので、ラズパイシリーズ自体が手軽に大量に買える製品だった頃が懐かしくさえ感じます。

そんな時こそ捨てられずに眠っているような10年以上も前のデスクトップを引っ張り出してきて、Linuxをインストールして使ってみる再考の機会なのかもしれません。

またPC本体だけに2万円も予算があるならば、ジャンクショップで一昔前のマザーボード、メモリ、CPU、HDD、電源ユニット、ケースをラズパイ4相当のスペックを狙って買い揃えても良いでしょう。

そうやって、格安のジャンク品をかき集めて組んだパソコンですが、どうしてもラズパイ4に分があるのは、
場所を取らない省スペース性消費電力が少ない省エネ性無線WiFi内蔵といったことが挙げられると思います。

特に、オフィスや家庭においてもかつての有線イーサーネット接続から無線WiFiが、主流のインターネット接続方法になっていると思いますので、LinuxOSを載せたジャンクPCがWiFi接続できないのは致命的な弱みになります。

そんな時の強い見方が、今回紹介する
『TP-Link TL-WN725N』です。

なお、ネット検索で「Debian TL-WN725N」と検索しても当ブログと同様の内容の紹介記事をいくつか探すことができます。

これらの記事の内容は少々古くなっているようで、最近のリリース版であるDebian 10/11 Linuxではドライバのインストールに失敗して利用不可になっています。

よってお手元のパソコンのLinux OSのバージョンにも注意が必要になります。


そのままではTL-WN725Nを認識してくれない

まずは手元のDebian 11の環境の基本情報とカーネルを確認してみます。

            #👇Debian11の基本OS情報
$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 11 (bullseye)
Release: 11
Codename: bullseye

#👇Debian11のマイナーバージョン情報
$ cat /etc/debian_version
11.2

#👇Linuxカーネルの情報
$ uname -srv
Linux 5.10.0-10-amd64 #1 SMP Debian 5.10.84-1 (2021-12-08)
        
ではまずそのままTL-WN725Nを認識してくれないかと期待して、PCのUSB2.0ポートへ挿し込んでみます。

何もドライバ設定していない手元のDebianが認識しているかというと、

            $ lsusb
Bus 003 Device 002: ID 8087:8000 Intel Corp.
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 8087:8008 Intel Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 002 Device 004: ID 14cd:1212 Super Top microSD card reader (SY-T18)
Bus 002 Device 003: ID 046d:c077 Logitech, Inc. M105 Optical Mouse
Bus 002 Device 002: ID 1c4f:0002 SiGma Micro Keyboard TRACER Gamma Ivory
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
        
...残念ですがそれらしいデバイスが表示されていないようです。

ということで、WindowsやMacOSと比べて少々面倒ですが、手動でデバイスドライバをインストールする必要があります。


TL-WN725N用のドライバをソースコードビルド&インストールする

Linux用のデバイスドライバはTP-link公式からは提供されるものだとソースコードの更新が遅く、現在の新しいLinuxカーネル上でビルドしてしまうと途中でこけて失敗してしまい、上手く使えないのがほとんどです。

このため、インストールするOSのディストリビューションやカーネルの差異を考慮して、ドライバソフトのソースコードビルド&インストールを手動で行うのが一番現実的で確実です。

TL-WN725Nという製品の基幹チップは、Realtek製の
「RTL8188EUS 」(メーカーサイト参考: RTL8188EUS 802.11bgn USB 2.0 Network Interface Controller)になっています。

ということで、RTL8118EUS用のデバイスドライバを利用すればどのようなLinuxでも原理的には動作するはずです。

幸い有志の方が、
RTL8118EUSのデバイスドライバのソースコードを公開されていらっしゃるのでこれをソースコードビルドします。

これをGitでプロジェクトごと頂いてきて、PCで直接ビルド&インストールをします。

            $ sudo apt update
$ sudo apt install -y linux-headers-$(uname -r) build-essential git
$ git clone https://github.com/lwfinger/rtl8188eu
$ cd rtl8188eu
$ make all
$ sudo make install
$ sudo insmod 8188eu.ko
        
とcコードをmakeするだけで非常に簡単に使えるようになります。

ではドライバがインストールされたようなので、きちんとデバイスが認識されたかを確認してみます。

            $ lsusb
#👇デバイスが追加されている
...
Bus 002 Device 004: ID 0bda:8179 Realtek Semiconductor Corp. RTL8188EUS 802.11n Wireless Network Adapter
...
        
で確かに「RTL8188EUS」が認識されているようです。

認識されると、デスクトップのメニューバーからそのままWiFiデバイスとして利用できるようになります。

合同会社タコスキングダム|蛸壺の中の工作室

トラブルシューティング① 〜 NetworkManagerでSSIDリストで見えない場合の対処

WiFi子機のMACアドレスでIPを固定したいときがたまにあります。

デフォルト設定のままだと、NetworkManagerの仕様でデバイススキャンの度に、ランダムに新しいMACアドレスが割り振られて困る場合、手動で対処する必要があります。

まず
/etc/NetworkManager/conf.d/80-wifi.confというファイルを作成し、以下の設定で編集します。

            [device]
wifi.scan-rand-mac-address=no
        
設定できたらNetworkManagerを再起動しておきます。

            $ systemctl restart NetworkManager
        

参考サイト

Ubuntu 18.04でUSB無線子機TP-Link TL-WN725Nを使う

トラブルシューティング② 〜 TL-WN725NのNIC(デバイス)がある日突然見えなくなる問題

ようやく古いデスクトップをWiFi対応できた、めでたしめでたし、といきたいところですが、後日Linuxカーネルをアップグレードした直後に、TL-WN725Nのネットワークデバイスが認識されなくなってしました。

自宅でSSHサーバーとして稼働させていたら最悪で、いきなりお家のホームネットワークに接続できなくなります。

帰ってから直接このパソコンにGUIモードで中身を確認すると、

合同会社タコスキングダム|蛸壺の中の工作室

WiFiデバイスだけがゴッソリ消えております。

他方、USBデバイスとしては以下のように認識されていて、ハードウェア的なトラブルではない様子です。

            $ lsusb
#👇ちゃんとUSBは認識されている
Bus 002 Device 004: ID 0bda:8179 Realtek Semiconductor Corp. RTL8188EUS 802.11n Wireless Network Adapter
#...
        
どうやら憶測ですが、ハードウェア的な問題ではなく、ネットワークドライバがカーネルの更新時に破壊されてしまったようです。

...これは困ったと思い、色々と設定を弄って回復を試みたものの、結局は
上記で説明した手順「ドライバの再インストール」が一番手っ取り早い解決法のようです。

このような不安定な挙動は、無償で有志の方が提供されているソフトウェアの宿命というか、ある程度は仕方のないと許容する必要はあります。

不具合があったら悶々と悩まずに、一度ネットワークドライバの再インストールを試みれば幸せになれるかも知れません。


SSHサーバーの設定

先ほどまでの内容でTL-WN725NをDebian11で利用可能になっていますが、ラズパイの代わりに使うのなら折角ですので次なるステップとして、「SSHサーバー」を立てておいて外部からSSH接続させてみるのも良いでしょう。

            #👇openssh-serverをインストール
$ sudo apt update && sudo apt install openssh-server

#👇インストールされたかステータスの確認
$ sudo systemctl status ssh
● ssh.service - OpenBSD Secure Shell server
   Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enab
   Active: active (running) since Fri 2022-02-25 17:33:27 JST; 6s ago
     Docs: man:sshd(8)
           man:sshd_config(5)
 Main PID: 26327 (sshd)
    Tasks: 1 (limit: 4915)
   Memory: 1.1M
   CGroup: /system.slice/ssh.service
           └─26327 /usr/sbin/sshd -D

 2月 25 17:33:27  ******* systemd[1]: Starting OpenBSD Secure Shell server...
 2月 25 17:33:27  ******* sshd[26327]: Server listening on 0.0.0.0 port 22.
 2月 25 17:33:27  ******* sshd[26327]: Server listening on :: port 22.
 2月 25 17:33:27  ******* systemd[1]: Started OpenBSD Secure Shell server.

#👇ブート時にSSHサーバーが立ち上がるようにする
$ sudo systemctl enable ssh
$ sudo systemctl start ssh
        
これでSSHサーバーとして起動させておき、別のPCのクライアント端末からSSH接続させてみます。

            $ ssh <接続先のユーザー名>@xxx.xxx.xxx.xxx
The authenticity of host 'xxx.xxx.xxx.xxx (xxx.xxx.xxx.xxx)' can't be established.
ECDSA key fingerprint is SHA256:*************************.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'xxx.xxx.xxx.xxx' (ECDSA) to the list of known hosts.
taconocat@xxx.xxx.xxx.xxx's password:
Linux ******** 5.10.0-10-amd64 #1 SMP Debian 5.10.84-1 (2021-12-08) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Fri Nov 22 14:37:16 2019
>$
        
としてちゃんと接続できるようになりました。

SSH接続出来れば後はSSHサーバー機のGUI(グラフィカルユーザーインターフェース)でのアクセスは無駄になので、以下のコマンドでCUI(コマンドユーザーインターフェース)に切り替えておきます。

            $ sudo systemctl set-default multi-user.target
        
なおCUIコマンドからデスクトップ環境を起動したい場合には、

            $ startx
        
更にデフォルトのログインモードもGUIに戻す場合、

            $ sudo systemctl set-default graphical.target
        
で柔軟に切り替えられることも覚えておきましょう。

Autologinの設定

SSHを接続させる場合、自動的にログインが掛からないのでSSHサーバーが起動待ちになっていて不便です。

電源を入れたときに
tty1で自動ログインさせることによって、そのままSSHサーバーも起動状態に移行することができます。

Debian系でAutologinさせる場合、
getty@tty1.service.dというディレクトリを新規作成して、その中で以下の内容のautologin.confを置いておきます。

            [Service]
ExecStart=
ExecStart=-/sbin/agetty --autologin <ログインするユーザー名> --noclear %I 38400 linux
        
これで再起動後にオートログインが掛かります。

IPアドレスの固定

Debian 11 (bullseye)の環境をIP固定をしています。

            $ ip addr
#👇コレがWiFiデバイス
3: wlx5ca6e685747b: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether ff:ff:ff:ff:ff:ff brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.104/24 brd 192.168.0.255 scope global dynamic noprefixroute wlx5ca6e685747b
       valid_lft 6437sec preferred_lft 6437sec
#...
        
ここで手元のWiFiのデバイス名がwlx5ca6e685747bと分かります。なおTL-WN725Nではデバイス名にwlx[12桁]の固有のデバイスIDが割り振られている仕様のようです。

ということで、お手元で試される場合にはお持ちのデバイス名の固有名で適宜読み替えて設定してみてください。

それで肝心のWiFiの固定IPアドレスにする方法として、最も簡単なものは
dhcpcdを利用することです。

まずはdhcpcdは標準ではインストールされていないデーモンツールですので、以下のようにDebianにパッケージインストールします。

            $ sudo apt install -y dhcpcd5
        
インストール後に/etc/dhcpcd.confという設定ファイルが作成されています。このファイルへ固定するIPの情報を追記します。

ここでは固定するIPを
192.168.0.123とし、デフォルトゲートウェイ(router)とDNSサーバーを192.168.0.1、に設定する例です。

            #...中略
#👇ファイルの末尾に追記
interface wlx5ca6e685747b
static ip_address=192.168.0.123/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1
        
ここら辺は、お使いのWiFiルーターの仕様で設定する値が異なるので、お使いの製品の説明書などを良く読んでから設定してください。

ちなみに手元のWiFiルーターもTP-Link製です。

これでdhcpcdデーモンを起動時に立ち上がるようにサービスを登録しましょう。

            $ sudo systemctl enable dhcpcd
        
これでPCを再起動後にIP値が変わっているか確認してみます。

            $ ip addr
#👇コレがWiFiデバイス
3: wlx5ca6e685747b: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether ff:ff:ff:ff:ff:ff brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.123/24 brd 192.168.0.255 scope global dynamic noprefixroute wlx5ca6e685747b
       valid_lft 6437sec preferred_lft 6437sec
#...
        
ということでIP値が192.168.0.123に固定されていることが分かります。

なお比較としてラズパイでIP値を固定する場合には、
こちらの方法も共通の手順で設定できます。

その他の設定〜SSHポートの設定

Debianの場合、以前じっくり説明させて貰った「Raspberry Pi OS」と同じ作業になります。

ここではそちらの設定方法を参照して頂くとして、SSHのポート番号の割り振りに関しては、
こちらの項目で設定できます。

参考サイト

Enable SSH Server on Debian

LinuxでCUI/GUIの切り替え方をログインメッセージに表示する

電源を入れたときにtty1を自動ログインする設定あれこれ集.md


まとめ

今回はDebian 11でもTL-WN725Nを使うためのドライバーの設定方法を解説してみました。

これでWiFiがメインの職場にもご家庭のインターネット環境でも場所を選ばずに古いPCをインターネット接続することが出来るようになりました。

TL-WN725Nは今でもかなり安価で手に入るので、とてもコストパフォーマンスの良いWiFiインターネット環境が整うと思います。