ALFA AWUS036ACH で自作する長距離ドローンデジタル映像伝送/テレメトリーリンク:wfb-ng オープンソースガイド(2026)
目次
著者:Yupitek(ALFA Network 台湾正規代理店)テクニカルチーム 対象読者:ドローン愛好家、Maker、セキュリティ研究者、農業散布/点検ドローンの開発者 難易度:★★★☆☆(Linux とフライトコントローラーの基本知識が必要)
一、なぜ ALFA アダプターでデジタル映像伝送を自作するのか?#
従来のアナログ FPV(5.8GHz アナログ映像伝送)を経験したことがあれば、「スノーアンテナ」に悩まされたことはないでしょうか。信号が遮られると画面がノイズだらけになり、遠くに飛ばすと映像が途切れ始めます。さらに誰でも受信機一台で映像を盗み見できる——暗号化もなく、テレメトリーの帰還もありません。
私たちのチームはこの1年、農業散布、点検、さらにはセキュリティトレーニングの顧客向けにリンクを構築してきて、非常に実用的なニーズに気づきました:一般的な ALFA USB 無線LANアダプターとオープンソースソフトウェアを使って、自分たちで「デジタル化、暗号化対応、映像+テレメトリー同時伝送」の長距離リンクを作れないか?
答えは「はい、可能です」——そして想像以上に簡単です。
従来のアナログ映像伝送と比較して、ALFA アダプターでオープンソースの wfb-ng を使ってデジタル映像伝送を構築するメリットは圧倒的です:
- 低遅延:raw WiFi インジェクションモードが通常の 802.11 ACK と接続ハンドシェイクをバイパスし、エンドツーエンドの遅延を数十ミリ秒レベルに抑制。FPV の操作感はアナログに匹敵します。
- デジタル暗号化:映像とテレメトリーパケットは libsodium で暗号化され、第三者が受信機で映像やフライトデータを復号することはできません。
- 1つのリンクでマルチタスク:同じ無線LANアダプター、同じ周波数で同時に伝送可能:
- リアルタイム映像(RTP / RTSP)
- MAVLink テレメトリー(双方向、フライトコントローラー ↔ 地上局)
- TCP/IP トンネル(VPN、SSH、ファイル転送に利用可能)
- TX ダイバーシティ(送信ダイバーシティ):複数のアダプターで送信ダイバーシティを構成し、遮蔽に強く、堅牢性を向上。
- オープンソースでカスタマイズ可能:ALFA AWUS036ACH とオープンソースの wfb-ng の組み合わせで、市販のデジタル映像伝送(DJI O3 / Walksnail 等)よりはるかに低コスト。完全オープンソースでカスタマイズ自由です。
二、wfb-ng とは#
wfb-ng(Wireless Fibre / WiFi Broadcast – next generation)は、オープンソースのデジタル FPV とテレメトリーのためのプロジェクトです。その中核となる発想は非常に賢いものです:
WiFi を「ネットワーク」として使うのではなく、「無線機」として使う。
通常の 802.11 はローカルエリアネットワークとして動作するため、接続(association)、ACK 確認、再送信を行います。これらの機構は長距離・移動・低信号のシナリオでは速度を低下させ、通信距離を制限します。wfb-ng は raw WiFi インジェクション(raw WiFi injection) を採用しています:
- アダプターを monitor mode(モニターモード) で動作させ、誰とも「接続」しません。
- 低レベルの WiFi パケットを直接注入し、ACK も再送信も不要(パケットロスには FEC 前方誤り訂正で対応)。
- 通常の 802.11 の距離と遅延の制限をバイパスし、伝送距離と安定性をハードウェアの限界まで引き出します。
簡単に言えば、一般的な USB 無線LANアダプターを「デジタル無線機」のペアに変え、その上で RTP 映像、MAVLink テレメトリー、さらには IP トンネルを動作させることができます。
- プロジェクトページ(GitHub):https://github.com/svpcom/wfb-ng.git
- 現在、PX4 / ArduPilot エコシステムでの自作デジタル映像伝送に広く使用されており、コミュニティは活発です。ウクライナの自作ドローンコミュニティでもよく使われるオープンソースリンク方式です。
三、主役:ALFA AWUS036ACH#
このリンクの「無線機」はまさにこれ——ALFA AWUS036ACH です。
Realtek RTL8812AU チップを搭載し、802.11ac(WiFi 5)、2.4GHz / 5GHz デュアルバンド、USB 3.0 Type-C インターフェース、着脱可能アンテナ(RP-SMA)に対応しています。さらに重要なのは:wfb-ng の公式テストハードウェアは、両端に AWUS036ACH を使用し、5GHz モードで動作することです。つまり、このアダプターはプロジェクト作者によって検証され、ドライバサポートが最も安定しているモデルです。
選定理由は3つ:
- 出力が十分:ALFA の一貫した高出力設計と、外部高ゲインアンテナの組み合わせにより、長距離性能は一般的なノートPC内蔵アダプターをはるかに上回ります。
- モニターモード + インジェクション対応:RTL8812AU はパッチ適用済みドライバ(後述)のもとで、monitor mode と raw パケットインジェクションを安定してサポートします。これは wfb-ng 動作の必須条件です。
- 汎用性と耐久性:USB インターフェースで、機体側と地上局側で共通して使用可能。故障時も該当アダプターのみ交換すればよく、メンテナンスが容易です。
rtl88xxau_wfb など)が必要です。通常の Linux 内蔵ドライバでは wfb-ng が必要とするインジェクションモードに入ることができません。インストール方法は後述の「ソフトウェアリスト」と「Step-by-step 設定」を参照してください。四、ハードウェアリスト(Hardware List)#
リンクは**機体側(Drone)と地上局(Ground Station)**の2セットに分かれます。
機体側(Drone)#
| 項目 | 推奨モデル / 説明 |
|---|---|
| 機体側コンピュータ | Raspberry Pi 3B / 3B+ / Zero 2 W / 4(いずれか。1080p を使用する場合は Pi 4 または Zero 2 W を推奨) |
| カメラ | Raspberry Pi Camera(CSI インターフェース)または Logitech C920(USB インターフェース) |
| WiFi モジュール | ALFA AWUS036ACH(または任意の RTL8812AU チップ搭載アダプター) |
| 電源 | 5V BEC(アダプターへの独立供电、後述の「トラブル注意点」参照) |
| フィルタコンデンサ | 470µF 低ESR コンデンサ(アダプターの +5V と GND 間に並列接続) |
| フライトコントローラー | Pixhawk 等(MAVLink プロトコル、UART 経由で機体側コンピュータに接続) |
地上局(Ground Station)#
| 項目 | 推奨モデル / 説明 |
|---|---|
| コンピュータ | Linux コンピュータ(Ubuntu / Debian x86-64)、または別の Raspberry Pi |
| WiFi モジュール | ALFA AWUS036ACH |
| 監視ソフトウェア | QGroundControl を実行するマシン(地上局コンピュータと同一で可) |
注:受信専用(RX) の場合は、monitor mode に対応したアダプターであれば何でも使用可能です。例えば OpenWRT をインストールしたルーターも地上局の受信機として利用できます。ただし、公式テストと本記事の設定は AWUS036ACH を基準としています。
五、ソフトウェアリスト(Software List)#
オペレーティングシステム#
- Raspberry Pi OS / Debian / Ubuntu(Linux kernel >= 4.x)
コアプロジェクト#
- wfb-ng(svpcom/wfb-ng):デジタル映像伝送 / テレメトリー メインプログラム
- パッチ適用ドライバ:
- RTL8812AU ->
svpcom/rtl8812au(branch v5.2.20、dkms でインストール) - RTL8812EU ->
svpcom/rtl8812eu - ドライバロード後、アダプター名は
rtl88xxau_wfb(またはrtl8812eu)と表示されます
- RTL8812AU ->
システム依存パッケージ#
sudo apt update
sudo apt install -y \
python3-all libpcap-dev libsodium-dev libevent-dev \
python3-pip python3-pyroute2 python3-twisted python3-serial \
python3-all-dev python3-venv iw socat debhelper dh-python \
fakeroot build-essential python3-msgpack python3-setuptools \
libgstrtspserver-1.0-dev暗号化#
- libsodium:
wfb_keygenでdrone.key(機体側)とgs.key(地上局側)を生成
地上局再生#
- QGroundControl:地上局でフライトコントローラーの状態とテレメトリーを監視
- GStreamer / RTSP:機体側からの映像ストリームを受信・再生
六、GitHub リンクと ALFA AWUS036ACH 仕様カード#
公式リンク#
| 項目 | リンク |
|---|---|
| wfb-ng プロジェクト | https://github.com/svpcom/wfb-ng.git |
| パッチ適用ドライバ(RTL8812AU) | https://github.com/svpcom/rtl8812au |
| パッチ適用ドライバ(RTL8812EU) | https://github.com/svpcom/rtl8812eu |
| ALFA AWUS036ACH 製品ページ | https://yupitek.com/ja/products/alfa/awus036ach/ |
| PX4 WFB-ng チュートリアル | https://docs.px4.io/main/en/tutorials/video_streaming_wfb_ng.html |
ALFA AWUS036ACH 仕様カード#
| 仕様 | 内容 |
|---|---|
| チップ | Realtek RTL8812AU |
| 無線規格 | 802.11a / b / g / n / ac(WiFi 5) |
| 周波数帯 | 2.4GHz + 5GHz デュアルバンド |
| インターフェース | USB 3.0 Type-C |
| アンテナ | 2 x 着脱式 RP-SMA(2T2R MIMO) |
| モニターモード | monitor mode + パケットインジェクション対応(wfb-ng patch ドライバが必要) |
| wfb-ng ドライバ | rtl88xxau_wfb(svpcom/rtl8812au, v5.2.20) |
| 位置づけ | wfb-ng 公式テスト済みアダプター(両端 5GHz モード) |
七、Step-by-step 設定(核心章節)#
以下の4セクションに分かれます。最も推奨するのは A(Raspberry Pi クイックスタート) で、イメージを書き込むだけですぐに使えます。B は x86 Linux デスクトップに手動で地上局をインストールしたい方向けです。C / D はキーペアと設定ファイルの重要ポイントで、どちらのパスでも必要になります。
A. Raspberry Pi クイックスタート(最も推奨)#
wfb-ng 公式が事前にパッケージ化された Raspberry Pi イメージを提供しています。機体側と地上局側でそれぞれ1枚ずつ書き込めば、起動するだけで使用できます。
1. イメージのダウンロードと書き込み
wfb-ng の GitHub Releases ページから最新の *.img.gz をダウンロードし、解凍して2枚の SD カード(機体側、地上局側各1枚)に書き込みます。
# イメージの解凍(例、ファイル名は実際の Release に従ってください)
gunzip wfb-ng-*.img.gz
# Raspberry Pi Imager または dd / balenaEtcher で SD カードに書き込み2. アダプター挿入、起動、SSH ログイン
両方のカードに ALFA AWUS036ACH を挿し、電源を入れて起動し、SSH でログインします(デフォルト IP と認証情報は以下の通り):
ssh [email protected]
# パスワード:raspberry3. 地上局(Ground Station)サービスの有効化
地上局側の Pi で以下を実行:
sudo systemctl enable wifibroadcast@gs
sudo systemctl enable rtsp
sudo systemctl enable fpv-video
sudo systemctl enable osd
sudo reboot4. 機体側(Drone)サービスの有効化
機体側の Pi で以下を実行:
sudo systemctl enable wifibroadcast@drone
sudo systemctl enable fpv-camera
sudo reboot5. 地上局でリンク状態を監視
wfb-cli gs接続、チャンネル、パケットロス率などの情報が表示されればリンクは確立されています。その後 QGroundControl を開けば、テレメトリーと映像が表示されます。
B. Debian / Ubuntu 地上局手動インストール#
x86-64 の Linux デスクトップ / ノート PC を地上局として使用する場合は、手動インストールが可能です。
1. dkms とパッチ適用ドライバのインストール
git clone -b v5.2.20 https://github.com/svpcom/rtl8812au.git
cd rtl8812au
sudo ./dkms-install.sh2. アダプターが wfb-ng ドライバに制御されていることを確認
# wlan0 が表示され、MTU が 2312 であることを確認
ifconfig
# ドライバ名が rtl88xxau_wfb(RTL8812AU)または rtl8812eu(RTL8812EU)と表示されることを確認
ethtool -i wlan0ethtool -i wlan0 が通常の rtl8812au と表示され、rtl88xxau_wfb でない場合、パッチドライバが正しくインストールされていません。wfb-ng はインジェクションモードに入れなくなります。dkms インストール時のエラーを確認してください。3. 公式自動インストールスクリプトの実行
curl -o install_gs.sh https://raw.githubusercontent.com/svpcom/wfb-ng/refs/heads/master/scripts/install_gs.sh
sudo bash ./install_gs.sh4. リンクの監視
wfb-cli gsC. キーとペアリング#
wfb-ng の映像とテレメトリーは暗号化されています。機体側と地上局側で対応するキーを使用する必要があります。
# キーの生成(機体側で生成し、配布)
wfb_keygen
# drone.key を機体側に配置
# gs.key を地上局側に配置
# 両端で対応している必要があります。そうしないと復号できず、リンクは「接続済みだがデータなし」と表示されますB セクションの自動インストールスクリプト(install_gs.sh) を使用する場合、スクリプトが自動的にキーを生成・設定するため、手動ペアリングは不要です。手動インストールの場合は、必ず
drone.keyとgs.keyが同じペアであることを確認してください。
D. 設定ファイルの重点:/etc/wifibroadcast.cfg#
/etc/wifibroadcast.cfg は wfb-ng の中核設定ファイルです。以下は最も頻繁に調整が必要なパラメータです:
[common]
# チャンネル 165 = 5825 MHz(5.8GHz 帯)
wifi_channel = 165
# 国コードを 'BO'(ボリビア)に設定すると最大送信電力が解放される
wifi_region = 'BO'
[drone]
# 機体側と地上局の link_domain は「完全に一致」している必要があります
link_domain = "my_wfb_link_01"
[drone_mavlink]
# フライトコントローラーの UART から MAVLink を受信(フライトコントローラー側の UART を 1500000 baud に設定)
peer = 'serial:ttyS0:1500000'
[drone_video]
peer = 'listen://0.0.0.0:5602'
[gs]
# 同上、両端で一致
link_domain = "my_wfb_link_01"最も間違いやすい3つのポイント:
wifi_channelを両端で一致させる:本記事では 165(5825 MHz, 5.8GHz)を使用。機体側と地上局側で同じチャンネルを設定してください。link_domainを両端で一致させる:これがリンクの「識別子」です。一致しないと接続できません。- フライトコントローラーの UART ボーレートを 1500000 に設定:
peer = 'serial:ttyS0:1500000'は、フライトコントローラー側の UART も 1500000 baud に設定されていることを前提としています。
wifi_region = 'BO' は送信電力の上限を解放するためのものです。これはお住まいの地域で合法的に使用できることを意味するものではありません。後述の「法規に関する注意」を必ず参照してください。八、実装上の注意事項/トラブルポイント#
このセクションは私たちが実際に遭遇したトラブルです。必ずお読みください。
トラブル 1:アダプターの電力不足によるポートリセットとパケットロス#
AWUS036ACH は送信(TX)時に瞬間的に大きな電力を消費します。Raspberry Pi の通常の USB2 ポートに直接接続すると、Pi の USB 供电が瞬間的な電流に耐えられず、アダプターポートのリセット、リンク断、パケット破損、画面フリーズが発生します。
解決策(機体側では必ず実施):
- アダプターは5V BEC から直接供电(Pi の USB から取らないでください)。BEC 出力をアダプターに接続します。
- アダプターの +5V と GND 間に 470µF 低ESR コンデンサを並列接続してフィルタリングし、TX 時の電流スパイクを吸収します。
- 地上局側でノートPCの USB3 ポート、純正 USB3 ケーブルを使用する場合は、通常は直接供电可能で、追加の BEC は不要です。
この手順が「安定するかどうか」の鍵です。パケットロスで悩んでいる多くのケースは、結局供电の問題でした。
トラブル 2:暗号化エラー/接続できない#
wfb-cli gs で接続済みと表示されるが映像もテレメトリーも表示されない場合、原因は以下の2つであることがほとんどです:
- キーの不一致:機体の
drone.keyと地上局のgs.keyが同じペアか確認してください。 - チャンネルまたは link_domain の不一致:両端の
wifi_channelとlink_domainが完全に同一である必要があります。
トラブルシューティングコマンド:
# 地上局サービスのリアルタイムログを確認し、暗号化/接続関連のエラーを探す
journalctl -xu wifibroadcast@gsトラブル 3:法規に関する注意(非常に重要)#
このリンクは能動的に電波を発射するため、無線設備の使用に関する行為に該当します。
- 使用前に、お住まいの地域でこのような WiFi 用途の送信電力と周波数帯が許可されていることを確認してください。
- 日本、欧米では 5.8GHz ISM 帯の送信電力、利用可能チャンネル、および「非接続型送信」に関する規制がそれぞれ異なります。
- 本記事の
wifi_region = 'BO'はハードウェアの出力上限を解放するためのものですが、日本を含む各地域で合法的であることを意味するものではありません。お住まいの国・地域の電波法規に従ってチャンネルと出力を調整し、必要に応じて送信電力を下げるか、合法チャンネルに変更してください。 - 合法的なエリア(私有農地、クローズドテスト環境、教育訓練など)でのみ使用し、他者の通信を妨害しないでください。
九、まとめ#
振り返ってみると、私たちは1枚の ALFA AWUS036ACH とオープンソースの wfb-ng を使って、以下の特長を持つシステムを構築できました:
- コスト優位性:自作リンクの材料費は市販のデジタル映像伝送ソリューションをはるかに下回ります。
- オープンソース:すべてのコード、ドライバ、設定が公開されており、確認可能です。
- カスタマイズ可能:チャンネル、出力、キー、MAVLink の公開方法をすべて自分で制御できます。
- 長距離:デジタル映像伝送とテレメトリーを一体化。5GHz での実測距離はアナログをはるかに超え、遮蔽に強く、暗号化も可能です。
農業散布、点検、セキュリティトレーニング、あるいは純粋に「デジタル映像伝送の背後にある原理」を理解したい愛好家にとって、これは非常に価値のある実践的な道です。
私たちのチームは引き続きブログで ALFA アダプターを使ったドローンリンクの実装ノートを発信していきます。構築中に問題が発生した場合は、ぜひコメントでお知らせください——実際に手を動かすことが、最も速い学習方法です。
常見問題
wfb-ng と通常の WiFi の違いは何ですか?
通常の WiFi は接続(association)と ACK 確認応答が必要なため、長距離では効率が悪くレイテンシが高くなります。wfb-ng は raw パケットインジェクションを使用し、802.11 の接続機構をバイパスして FEC 前方誤り訂正でパケットロスに対処するため、エンドツーエンドの遅延を数十ミリ秒レベルに抑えられます。
なぜ機体側の ALFA 無線LANアダプターに独立した電源が必要ですか?
AWUS036ACH は送信(TX)時に瞬間的に大きな電力を消費します。Raspberry Pi の USB 2.0 ポートに直接接続すると、電力不足によりアダプターのポートがリセットされ、リンク断やパケット破損が発生します。5V BEC で独立供电し、+5V と GND 間に 470µF 低ESR コンデンサを並列接続してフィルタリングすることを推奨します。
接続しても映像もテレメトリーも表示されない場合は?
最も一般的な原因はキーの不一致です。機体側の drone.key と地上局側の gs.key が同じペアであることを確認してください。次に、両端の wifi_channel と link_domain の設定が完全に一致していることを確認します。journalctl -xu wifibroadcast@gs でリアルタイムログを確認してトラブルシューティングできます。
wfb-ng には必ず ALFA AWUS036ACH が必要ですか?
RTL8812AU チップを搭載した無線LANアダプターであれば理論上は使用可能ですが、AWUS036ACH は wfb-ng プロジェクトが公式にテストしたハードウェアであり、ドライバのサポートが最も安定しています。特に高出力・長距離のシナリオでは、ALFA のパワーデザインと着脱可能なアンテナの利点が顕著です。
付録:初心者向け用語集(キーワードをやさしく解説)#
この種の技術に初めて触れる方のために、本記事で頻出する用語をわかりやすく説明します:
| 用語 | わかりやすい説明 |
|---|---|
| FPV(First Person View) | 「一人称視点」。ドローンの「操縦席」に座って飛んでいるかのように、機体カメラからの映像がリアルタイムで画面やゴーグルに表示されます。 |
| デジタル映像伝送 vs アナログ映像伝送 | アナログは旧式テレビ信号のように、信号が弱くなるとノイズが発生し、誰でも受信可能。デジタルは映像をデジタルパケットに変換して伝送するため、暗号化が可能でノイズ耐性に優れますが、ハードウェアと設定は複雑です。 |
| monitor mode(モニターモード) | 通常の WiFi アダプターはルーターに「接続」してデータを送受信します。monitor mode ではアダプターが「何にも接続せず、空中の無線信号を直接傍受・送信」するようになります。本記事の技術的基盤です。 |
| packet injection(パケットインジェクション) | monitor mode で、カスタム無線パケットを通常の WiFi 接続プロセスを介さずに直接空中に「射出」します。wfb-ng はこの仕組みを利用して映像とテレメトリーを伝送します。 |
| wfb-ng | WiFi アダプターを通常のネットワーク機器ではなく、ドローン専用の無線機として「生まれ変わらせる」オープンソースソフトウェア。本記事の中核ソフトウェアです。 |
| FEC(前方誤り訂正、Forward Error Correction) | 送信時にあらかじめ「バックアップ情報」を追加で送っておき、一部のパケットが空中で失われても、受信側がそのバックアップ情報を使って元の映像を復元できる仕組み。再送信(長距離・高速移動シーンでは速度低下の原因に)を不要にします。 |
| MAVLink | ドローンのフライトコントローラー(Pixhawk 等)と地上局が通信するための「共通言語」プロトコル。飛行状態の送信や飛行指令の伝達など、テレメトリーデータのやり取りに使用されます。 |
| RTP / RTSP | インターネット上でリアルタイム映像を伝送するための一般的なプロトコル。スマートフォンのIPカメラや監視カメラの多くも同様のプロトコルで映像を配信しています。 |
| libsodium 暗号化 | 本記事で映像とテレメトリーデータの暗号化に使用するオープンソース暗号化ライブラリ。正しくペア設定されたキーを持つ機体側と地上局のみが映像を復号できます。 |
| TX ダイバーシティ(送信ダイバーシティ) | 複数のアダプターで同一データを同時送信します。1つのアダプターの信号が遮蔽されても、別のアダプターが補完する「二重の保険」のような仕組みです。 |
| BEC(Battery Eliminator Circuit) | ドローンバッテリーの電圧をアダプターが必要とする 5V に降圧する安定化电源モジュール。アダプターの瞬間的な大電流需要にも対応し、供电不安定によるリンク断を防止します。 |
| RTL8812AU | ALFA AWUS036ACH アダプターに使用されている Realtek のチップ型番。このチップが monitor mode とパケットインジェクションに対応しているかどうかを決定します。 |
一言でまとめると:wfb-ng は ALFA アダプターをドローン専用の無線局に「変身」させ、映像とフライトデータをオープンソース・暗号化・長距離で伝送できるようにします。これは運用者が自ら構築する「自分だけの専用チャンネル」です。
参考リソース#
- wfb-ng プロジェクト(svpcom/wfb-ng):https://github.com/svpcom/wfb-ng.git
- ALFA AWUS036ACH 製品ページ:https://yupitek.com/ja/products/alfa/awus036ach/
- パッチ適用ドライバ(RTL8812AU):https://github.com/svpcom/rtl8812au
- パッチ適用ドライバ(RTL8812EU):https://github.com/svpcom/rtl8812eu
- PX4 WFB-ng チュートリアルドキュメント:https://docs.px4.io/main/en/tutorials/video_streaming_wfb_ng.html
本記事は Yupitek(ALFA Network 台湾正規代理店)テクニカルチームが、wfb-ng 公式ドキュメントと実装経験に基づいて作成しました。実装前には、必ずお住まいの地域の電波法規を確認し、規定に従って送信電力と周波数を調整してください。