USB型Wi-Fiアダプタ(ドングル)LM808、LM842の設定と敢えて選ぶ理由

コンピュータは内蔵されたWi-Fi機能以外に、USBで接続するタイプのWi-Fi アダプタ(ドングルとも言われます)から無線LAN通信をすることができます。
今回は敢えて無線非対応モデルの「PL-R4」に、USB型Wi-Fiアダプタを取り付けて使用する例をご紹介します。

産業用ラズパイの「PL-R4」シリーズは、通常通りWi-Fiが搭載されているRaspberry Pi Compute Module 4を組み込んだモデルの他に、無線非対応モデルもラインナップされています。

無線非対応のモデルも需要として存在しています。これは用途によりWi-Fiを使わない、または使えない環境の産業現場もあるからです。「PL-R4」は有線が標準仕様となっており、Wi-Fiはオプションでの追加になります。

元々、Raspberry Pi ComputeModule(CM)シリーズは、Wi-Fi搭載の有無やeMMC、メモリーの搭載量を選択できるラインナップの製品です。

※「PL-R4」の無線非対応モデルは、WiFiを無効に設定し、アンテナを非実装の状態で出荷されています。

技適の問題に縛られない可能性

敢えてRaspberry Pi 内蔵のWi-Fi機能を使わない状況は、市販されているPi 4やPi 5はWi-Fi機能を取り外せませんから特殊かもしれません。

Wi-FiやBluetoothとった無線通信は、日本の場合でいうと技適(技術基準適合証明)と呼ばれる電波法に準じないとなりません。これはどの国でも名称こそ異なりますが存在しています。

Raspberry Pi 本体も多くの国や地域で適合認定をしていますが、国によっては認定までタイムラグがあります。日本もかなり遅いですよね。
ビジネスによっては、そもそも適合認定ができていない国や地域でRaspberry Pi を使用したい場合も出てくるでしょう。

そこでUSB型Wi-Fiアダプタの必要性が出てきます。

今回ご紹介する2つの製品は、多くの国と地域で適合認定を受けている製品です。

Raspberry Piの無線適合認定はどうであれ、Wi-Fi機能が非実装のRaspberry Pi CMにUSB型Wi-Fiアダプタで備えさせるわけです。

例えば、Raspberry Pi CM5のように発売したばかりだと、日本国内では技適の認定が直ぐにされていません。しかし、Wi-FiなしのRaspberry Pi CM5であれば問題無く使用できます。実際にWi-Fi機能のないCM5は、国内でも直ぐに販売されました。

逆に、日本国内の技適が認定されていたとしても、実際に使用したい現場の海外では未認定の状況が出てきます。
もし後付けのUSB型Wi-Fiアダプタが適合を受けている製品であれば、日本国内でWi-Fiのセットアップや検証をおこない、そのまま海外で使えることになります。

他にも、Wi-Fiの必要が無い環境として産業用ラズパイを導入したものの、事情が変わり一時的にWi-Fi通信の環境が必要になった、という状況もあるでしょう。後付けできる簡便さが、敢えて選ばれる理由の1つにもなっています。

USB型Wi-Fiアダプタのメリット

今回のWi-Fiアダプタ製品を産業用ラズベリーパイで利用するメリットは他にもあります。

  • 追加費用が安価
  • ドライバを充てるだけで利用可能
  • LinuxOSでも問題なく動作する

LMテクノロジーズ社のWi-Fiアダプタ「LM808」と「LM842」

今回はLMテクノロージーズ社の「LM808」と「LM842」を試しました。

LM808とLM842の大きな違いは、LM842にBluetooth機能が搭載されている点です。
産業用途でも安心な動作温度で、対応OSが広いのも助かります。

詳しくはメーカーページで確認してください。
簡単なスペック紹介です。

LM808LM842
ワイヤレス方式ac/a/b/g/nac/b/g/n
Bluetoothなし5.0/4.2/4.1/4.0/3.0/2.1
周波数帯2.4GHz/5GHz2.4GHz/5GHz
動作温度0℃〜70℃-20℃〜85℃
対応OSLinux
OSX
Win10
Win7
Win8
WinVista
WinXP
Android
Linux
Win10
Win7
適合性compatibility1compatibility1

広く各国に適法させている製品だけに、世界的に実績があるメーカーとして信頼されています。
日本の技適マークも記載されていますね。

適合認定を受けている国と地域

※各国の認証の適用状況・更新状況等についてはメーカーに直接ご確認ください。

LM808

  • トルコ
  • シント・マールテン(オランダ領)
  • ホンジュラス
  • ドミニカ共和国
  • インドネシア
  • パラグアイ
  • エルサルバドル
  • グアテマラ
  • バハマ
  • ブラジル
  • 欧州連合
  • サウジアラビア
  • バーレーン
  • ユーラシア経済連合
    (ロシア、ベラルーシ、カザフスタン、アルメニア、キルギス)
  • アルゼンチン
  • アメリカ合衆国
  • カナダ
  • 南アフリカ
  • シンガポール
  • 韓国
  • インド
  • イスラエル
  • モロッコ
  • タイ
  • 台湾
  • メキシコ
  • オーストラリア・ニュージーランド
  • 中国
  • コスタリカ
  • 日本

LM842

  • トルコ
  • インドネシア
  • パキスタン
  • ブラジル
  • イギリス
  • 欧州連合
  • ユーラシア経済連合
    (ロシア、ベラルーシ、カザフスタン、アルメニア、キルギス)
  • アルゼンチン
  • アメリカ合衆国
  • カナダ
  • 南アフリカ
  • シンガポール
  • 韓国
  • インド
  • タイ
  • 台湾
  • メキシコ
  • フィリピン
  • マレーシア
  • オーストラリア・ニュージーランド
  • 中国
  • 日本
  • アラブ首長国連邦
  • ベトナム

デバイスドライバの準備

早速、LM808から試してみました。

環境:Raspberry Pi CM4 64bit Bookworm

こういったデバイスは、先ずドライバをインストールしないとなりません。

LM808をUSBポートに挿してからlsusbコマンドを実行してみます。

USBのWi-Fiアダプターは挿すだけで認識できています。
製品のメーカーはLMテクノロジーズ社ですが、搭載チップはRealtek製のRTL8811AUと分かりました。

Bus 001 Device 008: ID 0bda:a811 Realtek Semiconductor Corp. RTL8811AU 802.11a/b/g/n/ac WLAN Adapter

ドライバはメーカーのサイトにあります。Windows/Linux/Android/MacOS対応とありました。

メーカーサイトのドライバは使わない

結論から述べると、ドライバが古くラズパイだと正常にインストールはできませんでした。
このドライバは2019年リリースで、インストールスクリプトは2011/11/21と古くコンパイルエラーが出ます。
当時はRaspberry Pi OSではARMの64bitがリリースされていませんでしたから当然ですね。

RTL8811AUのドライバをインストール

githubにRealtek 802.11ac (rtl8812au)がありました。更新が2022年です。ラズパイ用(ARM64)のオプションもあります。
こちらをコンパイルしインストールしてみたところ動作しました。

github:https://github.com/gnab/rtl8812au

最初にaptアップデートして、必要なモジュール類をインストールしておきます。

sudo apt update
sudo apt install raspberrypi-kernel-headers build-essential bc dkms git

コンパイルに必要なbuild-essentialbcは、Raspberry Pi OSで既に最新でした。(記事執筆時点)

作業ディレクトリの中でgit clone

今回はlm808としてディレクトリを作成し、中でgit cloneしています。

mkdir lm808
cd lm808
git clone https://github.com/gnab/rtl8812au.git
cd rtl8812au

ラズパイ用に修正

このリポジトリは、git cloneしたディレクトリの中身にあるMakefileをラズパイ用に修正してからmakeします。

Kconfig    core       hal          install.sh    project        runwpa
Makefile   debian     ifcfg-wlan0  module.clean  repoTest1.js   wlan0dhcp
README.md  dkms.conf  include      os_dep        repoTest2.htm

今回は64bitなので編集箇所はMakefileの57行目と64行目です。32bit版ならARM_RPIになり63行目です。
I386_PCをnにして、ARM_RPI_64をyに変更します。
Linux用とは一般的なLinuxのことなので、i386のPCとして設定されているからです。

MakeFileの中身

CONFIG_PLATFORM_I386_PC = n
CONFIG_PLATFORM_ARM_RPI_64 = y

コマンドsudo nano Makefileで開いて編集しても良いですし、sedコマンドで書き換えることもできます。

sedコマンドで該当箇所を書き換える場合は次の通りです。

sed -i 's/CONFIG_PLATFORM_I386_PC = y/CONFIG_PLATFORM_I386_PC = n/g' Makefile
sed -i 's/CONFIG_PLATFORM_ARM_RPI_64 = n/CONFIG_PLATFORM_ARM_RPI_64 = y/g' Makefile

ドライバのインストール

修正が終わったら、インストールします。makeコマンドではなく、インストール用のスクリプトファイルがあります。実行権限も付与されているためそのまま実行できます。

sudo ./install.sh

最後にDo you wish to activate the module now? (y/n)と聞かれるので、yでアクティブにしても良いですし、再起動させるだけでも有効になります。
再起動後はwlan0(Wi-Fi/無線)が表示されています。

dkmsでのインストール

このinstall.shではdkmsを使ったインストールがされていませんでした。dkmsを実行すると、元々オリジナルのモジュールがないためか、警告されました。 (WARNING! Diff between built and installed module!)

github cloneしたディレクトリで実行。

sudo make dkms_install

ステータス確認コマンド

sudo dkms status

ドライバの削除コマンド

sudo make dkms_remove

今のところは問題なさそうなのでそのままですが、kernelがバージョンアップしたらどうか分かりません。
dkmsでのインストールはドライバ管理が楽になります。別に使用しなくても動作はします。
一先ずこれでドライバのインストールは終わりです。

新規接続タイプと接続設定

このままでは接続タイプにWi-Fiの項目がない状態です。有線接続だけです。

LM808でWi-Fiネットワークとして接続するために、新しい接続タイプ先を作成する必要があります。
新しい接続先を作成しながら、Wi-Fi接続設定もします。

コマンドだと次の通りです。
 3箇所は任意で環境に応じて変更してください。
 

  • con-name “LM808”
  • wifi.ssid “接続したいSSID”
  • 802-11-wireless-security.psk “SSIDの接続パスワード”

現在のRaspberry Pi OSは、NetworkManagerを利用していますからnmcliコマンドで設定します。

nmcliコマンド例

sudo nmcli connection add con-name "LM808" \
type wifi \
ifname wlan0 \
connection.autoconnect yes \
wifi.mode infrastructure \
wifi.ssid "接続したいSSID" \
802-11-wireless-security.auth-alg open \
802-11-wireless-security.key-mgmt wpa-psk \
802-11-wireless-security.psk "SSIDの接続パスワード" \
ipv4.method auto \
ipv4.never-default no \
ipv6.method disabled

お使いのRaspberry Piにデスクトップ環境があるなら、メニューバーのネットワークアイコンから追加作成することもできます。
(高度なオプション –> 接続を編集–> プラスアイコンからWi-Fiを選ぶ)

ただ、意外とどこに何を記入すれば良いのか分かりづらいため、コマンドの方が簡単に思えました。

確認する

nmcli deviceコマンドでみると取得中になり、その後接続済みになります。これでipコマンドでIPアドレスが振られているのが分かります。

nmcli deviceコマンド

DEVICE  TYPE      STATE            CONNECTION 
wlan0   wifi      接続中 (IP 設定を取得中)  LM808
↓
wlan0   wifi      接続済み         LM808

ip aコマンド

4: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 34:c9:f0:90:6f:90 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.73/24 brd 192.168.0.255 scope global dynamic noprefixroute wlan0
       valid_lft 86157sec preferred_lft 86157sec

これでLM808のWi-Fiの接続設定はすべて完了です。
既にWi-Fiに繋がっていると思います。

LM842の場合

LM842もここまでご紹介したやり方とほぼ同じです。
lsusbで確認してプロファクト&ベンダーID(0bda:c82c)で調べると、どうやらRTL8821cuでした。
チップが異なるためドライバも同じでは都合が悪いです。

Bus 001 Device 004: ID 0bda:c82c Realtek Semiconductor Corp. 802.11ac NIC

メーカーが用意しているドライバを確認すると2020年のものでした。LM842をAndroidで使うならメーカーのドライバをインストールすると良いでしょう。
今回はLinuxとは言っても特殊なRaspberry Piなので、また別のドライバを探してくることにします。(※LM842のメーカー製ドライバは試していません)

いくつかあるドライバの中から、インストールに問題がなかったリポジトリをご紹介します。

次のgithubのリポジトリを使いました。
github:https://github.com/morrownr/8821cu-20210916

git clone https://github.com/morrownr/8821cu-20210916.git

先程とは異なるリポジトリで、こちらもinstall-driver.shに実行権が付与されていて、そのまま実行してOKでした。

Makefileの中身をみてみると、AUTO_DETECT=yとあり、githubにもRaspberry Pi OS 64bit bookwormで動作確認と記載があったので、このまま実行しても大丈夫でした。
先程のLM808と同様に、必要なモジュール類を先にインストールしてあれば問題なくshファイルのみでインストールできます。

必要なモジュール類のインストール

sudo apt update
sudo apt install raspberrypi-kernel-headers build-essential bc dkms git

続けて、shファイルを実行すればOKです。

sudo ./install-driver.sh

このインストールスクリプトは、最後にドライバのオプションを編集しますか?と聞かれます。
Do you want to edit the driver options file now? (recommended) [Y/n]

yで/etc/modprobe.d/8821cu.confが開き、編集することができます。nで飛ばしても構いません。
更にその後、再起動しますか?と聞かれます。
Do you want to apply the new options by rebooting now? (recommended) [Y/n]
yで再起動すればOKです。

なお、注意事項としてOSやカーネル(kernel)がバージョンアップしたらgit pullして再度インストールしてくれと表示されました。親切ですね。

Update this driver with the following commands as needed:

$ git pull
$ sudo sh install-driver.sh

こちらのリポジトリは、ラズパイ用に設定を変更することも無くスクリプトで一発インストールできました。
呆気なく終わります。

LM842のドライバのインストールではdkmsが使われていたため、ステータスコマンドで調べるとキチンと表示されています。

sudo dkms status 

rtl8821cu/5.12.0.4, 6.6.62+rpt-rpi-v8, aarch64: installed

これだとドライバの削除もdkmsコマンドで可能です。

LM842のbluetooth通信

LM842はWi-FiのみならずBluetoothも搭載されています。
こちらはWi-Fiと違って、少し面倒な作業があります。

Bluetoothを使っていくつか接続を試してみました。

Bluetoothがロックされている?

先ず、Bluetoothがロックされていると使えません。

rfkill listコマンドで確かめてみます。

rfkill list

0: hci0: Bluetooth
    Soft blocked: no
    Hard blocked: no
1: hci1: Bluetooth
    Soft blocked: yes
    Hard blocked: no
2: phy0: Wireless LAN
    Soft blocked: no
    Hard blocked: no

hci1のBluetoothがソフトブロックされています。今回のLM842はhci1です。
これを解除してあげないとなりません。
そうしないと、sudo bluetoothctlorg.bluez.Error.Failedが出て何もできません。

次のコマンドでアンブロックします。

rfkill unblock bluetooth

これでOKです。

Bluetooth接続を試す①〜マウス

1つ目はマウスで試しました。
ロジクール製の「Pebble」というマウスは、Wi-Fiドングルでも接続できますが、Bluetoothも合わせて搭載されています。
今回はBluetooth接続で使ってみました。これならUSBレシーバーが要りませんからUSBポートが1つ空きます。

ロジクール製マウス「Pebble」
Wi-Fiなら緑色点滅、Bluetoothなら青色点滅

GUIの画面だとどうも上手くできなかったため、やはりコマンドベースで進めました。

bluetoothctlコマンドでペアリングします。

sudo bluetoothctl

コマンドプロンプトが[bluetooth]#に変わったら、上から順番に実行していきます。

power on
discoverable on
scan on
trust マウスのMACアドレス

スキャンすることでロジクール製のマウスが検出されます。
ズラーっと表示されていく中に、Pebbleの表記が見つかります。このMACアドレスをコピーしておきましょう。
ここではMACアドレスはED:53:18:B3:42:B4と出ていました。

次にマウスと接続させてペアリングし、毎回ペアリングしなくても済むように信頼(Trust)させます。

connect ED:53:18:B3:42:B4 
pair ED:53:18:B3:42:B4 
trust ED:53:18:B3:42:B4 

これで既にBluetooth接続マウスとして使えるようになっています。

情報を確認してみましょう。
connectさせた時点でプロンプトが[Logi Pebble]#に変わっていますから、infoと叩けばPebbleの情報が表示されて細かい内容が確認できます。

[Logi Pebble]# info
Device ED:53:18:B3:42:B4 (random)
    Name: Logi Pebble
    Alias: Logi Pebble
    Appearance: 0x03c2
    Icon: input-mouse
    Paired: yes
    Bonded: yes
    Trusted: yes
    Blocked: no
    Connected: yes
    LegacyPairing: no
    UUID: Generic Access Profile    (00001800-0000-1000-8000-00805f9b34fb)
    UUID: Generic Attribute Profile (00001801-0000-1000-8000-00805f9b34fb)
    UUID: Device Information        (0000180a-0000-1000-8000-00805f9b34fb)
    UUID: Battery Service           (0000180f-0000-1000-8000-00805f9b34fb)
    UUID: Human Interface Device    (00001812-0000-1000-8000-00805f9b34fb)
    UUID: Vendor specific           (00010000-0000-1000-8000-011f2000046d)
    Modalias: usb:v046DpB021d0007
    RSSI: -41
    TxPower: 4
    Battery Percentage: 0x64 (100)

マウスの接続なのでこれは簡単でした。

Bluetooth接続を試す②〜iPhoneでテザリング

次に試したのはインターネット共有のテザリングです。
iPhoneのインターネット共有を許可すれば、BluetoothでペアリングしているRaspberry PiからiPhoneの回線を介してインターネットに接続ができます。Androidも同じ仕組みです。置き換えて読んでください。

設定の流れ

LM842のドライバは記事前半のようにインストールした後のお話です。
更に、先程のマウスをBluetooth接続する前に施したBluetooth接続が可能な状態が前提になります。

  1. Raspberry Pi 側でペアリング(bluetoothctlコマンド)
  2. Wi-Fi接続を切断
  3. nmcliコマンドでiPhoneに接続

XX:XX:XX:XX:XX:XXは、iPhoneのMACアドレスですが伏せているだけです。
iPhoneのMACアドレスは、設定–> 一般 –> 情報 にあります。


伏せていますが、BluetoothのMACアドレスが必要です。

1.ペアリング

マウスの時と同じようにsudo bluetoothctlscan onします。できないなら、先程のようにpower onから順番に実行します。

[bluetooth]# pair XX:XX:XX:XX:XX:XX
Attempting to pair with XX:XX:XX:XX:XX:XX
[CHG] Device XX:XX:XX:XX:XX:XX Connected: yes
Request confirmation
[agent] Confirm passkey 214271 (yes/no): yes

ターミナルで確認のパスキーが表示されると同時に、iPhone側でも承認するかの画面が表示されます。

同じ番号ですね。iPhone側のペアリングを押した後に、ターミナルのyes/noをyesと入力しEnterキーで確定をすると、Pairing successfulとターミナルに表示されます。
ペアリングはこれで完了です。

2.Wi-Fiを切断

このままだとまだLM842のWi-Fi接続ができている状態だったため、Wi-Fi接続を一旦切断させます。
単独になればBluetooth接続していることが分かりやすいからです。

デスクトップ画面なら、トップメニューバーWi-Fiのアイコンから接続しているSSID名をクリックすれば切断できます。
コマンドならnmcliのradioオプションで切断できます。

sudo nmcli radio wifi off

3.nmcliコマンドで接続

では、ペアリングもできたので、実際に接続してみます。
先にiPhoneのインターネット共有はONにしておいてください。

次にRaspberry Pi側のコマンドで、iPhoneのMACアドレスを指定して接続します。

sudo nmcli dev connect XX:XX:XX:XX:XX:XX

成功すると、「〜正常にアクティベートされました」と表示されます。
Raspberry Piのデスクトップ画面でも接続が完了したダイアログが表示されると思います。
接続もデスクトップ画面のトップメニューバーからBluetoothアイコンを選びiPhoneの名前が出ていればクリックだけで接続もできます。

ステータスで確認してみましょう。
iPhoneのMACアドレスのTYPEがbtで接続済みになっているのが分かります。

sudo nmcli dev status

DEVICE             TYPE      STATE            CONNECTION                    
XX:XX:XX:XX:XX:XX  bt        接続済み         XX:XX:XX:XX:XX:XX 

iPhone側も接続がテザリングという意味のインターネット共有アイコンが表示されているのが分かります。上部に色バーも付きますよね。

Wi-Fi接続も切断してあるため、テザリングで接続できていることが分かります。
Wi-Fiのマークの部分が携帯電話のアイコンに変わっています!

Bluetoothデバイスに、先のマウスとiPhoneが接続されていることが緑のチェックマークで分かります。
Yahoo!のページを表示させてみました。
いつも使っている4Gや光回線と比べれば遅いのは仕方ありません。Bluetooth接続のテザリングでは、通常のウェブブラジングには向きませんが、テキスト主体の軽い接続であれば安定もしていて何も問題はありません。

これでBluetooth接続でのテザリング(インターネット共有)もできました。

LM808、LM842の使用感

私はネットワーク周りは興味あるため、なんとか理解はできました。ちょっと難しいですよね。
ここに書いてあることがすべてではなく、環境によってはまだ足りない箇所があるかもしれません。概ねこの通りで接続できると思います。
もしもできない場合は、Wi-Fiアダプタのドライバがエラーでインストールできていない可能性があります。

LM842で行ったBluetoothのテザリングは、iPhoneのWi-Fiとは関係がなく、単にRaspberry PiとBluetooth接続するだけです。
iPhone側の機能を介してRaspberry Piがインターネットに繋がるというわけです。
この辺は少しややこしい部分ですね。

LM808はお手軽にWi-Fi機能を追加できるため、ac/a/b/g/nのスペックで満足できればオススメです。
どちらも多くの国や地域でデバイスの認証がされている製品だけに、国内だけの使用では勿体ない気がするかもしれません。しかし、実績があるメーカーの製品ですから、ビジネスで使うなら安心の意味でも候補にしておきたいですね。

Wi-Fi機能がないCM4/5に、Wi-Fiアダプターは都合が良いなと感じました。

製品ページ
LM808:https://www.lm-technologies.com/product/wifi-usb-adapter-433mbps-lm808/
LM842:https://www.lm-technologies.com/product/wifi-802-11ac-bluetooth-5-0-2t2r-usb-combi-adapter-lm842/

NetworkManager
公式:https://networkmanager.dev/
参考:https://wiki.archlinux.jp/index.php/NetworkManager


記事寄稿:ラズパイダ

非エンジニアでも楽しく扱えるRaspberry Pi 情報サイト raspida.com を運営。ラズベリーパイに長年触れた経験をもとに、ラズベリーパイを知る人にも、これから始めたいと興味を持つ人にも参考になる情報・トピックを数多く発信。PiLinkのサイトへは産業用ラズベリーパイについて技術ブログ記事を寄稿。