Skip to content

Commit 614f1f8

Browse files
committed
Update README and github workflows
1 parent 2ae2503 commit 614f1f8

File tree

4 files changed

+55
-64
lines changed

4 files changed

+55
-64
lines changed

.github/workflows/build_debian.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,19 +9,19 @@ on:
99

1010
jobs:
1111
build_and_test:
12-
runs-on: ubuntu-24.04
12+
runs-on: ubuntu-22.04
1313
strategy:
1414
fail-fast: false
1515
matrix:
1616
version: [11, 12]
17-
arch: [ "arm32v7", "arm64v8", "amd64", "mips64le" ]
17+
arch: [ "arm32v7", "arm64v8", "amd64", "mips64le", "s390x", "ppc64le"]
1818

1919
steps:
2020
- name: Checkout repository
2121
uses: actions/checkout@v4
2222
- name: build package
2323
run: |
24-
curl -s -L https://github.com/svpcom/wfb-ng/releases/download/wifibroadcast-17.10/qemu-7.2.0-fixed.tar.gz | sudo tar xzv -C /
24+
curl -s -L https://github.com/svpcom/wfb-ng/releases/download/wifibroadcast-17.10/qemu-7.2.13-fixed.tar.gz | sudo tar xzv -C /
2525
make deb_docker DOCKER_SRC_IMAGE=${{ matrix.arch }}/debian:${{ matrix.version }}
2626
- name: Archive production artifacts
2727
uses: actions/upload-artifact@v4

.github/workflows/build_pi.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ on:
99

1010
jobs:
1111
build_and_test:
12-
runs-on: ubuntu-24.04
12+
runs-on: ubuntu-22.04
1313
strategy:
1414
fail-fast: false
1515
matrix:
@@ -24,7 +24,7 @@ jobs:
2424
uses: actions/checkout@v4
2525
- name: build package
2626
run: |
27-
curl -s -L https://github.com/svpcom/wfb-ng/releases/download/wifibroadcast-17.10/qemu-7.2.0-fixed.tar.gz | sudo tar xzv -C /
27+
curl -s -L https://github.com/svpcom/wfb-ng/releases/download/wifibroadcast-17.10/qemu-7.2.13-fixed.tar.gz | sudo tar xzv -C /
2828
make deb_docker DOCKER_SRC_IMAGE=p2ptech/cross-build:${{ matrix.docker-images }}
2929
- name: Archive production artifacts
3030
uses: actions/upload-artifact@v4

.github/workflows/build_ubuntu.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ on:
99

1010
jobs:
1111
build_and_test:
12-
runs-on: ubuntu-24.04
12+
runs-on: ubuntu-22.04
1313
strategy:
1414
fail-fast: false
1515
matrix:
@@ -21,7 +21,7 @@ jobs:
2121
uses: actions/checkout@v4
2222
- name: build package
2323
run: |
24-
curl -s -L https://github.com/svpcom/wfb-ng/releases/download/wifibroadcast-17.10/qemu-7.2.0-fixed.tar.gz | sudo tar xzv -C /
24+
curl -s -L https://github.com/svpcom/wfb-ng/releases/download/wifibroadcast-17.10/qemu-7.2.13-fixed.tar.gz | sudo tar xzv -C /
2525
make deb_docker DOCKER_SRC_IMAGE=${{ matrix.arch }}/ubuntu:${{ matrix.version }}
2626
- name: Archive production artifacts
2727
uses: actions/upload-artifact@v4

README.md

Lines changed: 48 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,23 @@
1-
![WFB-NG](doc/logo-big.png)
1+
![WFB-ng](doc/logo-big.png)
22

33
This is the next generation of long-range **packet** radio link based on **raw WiFi radio**
44

55
Main features:
66
--------------
7-
- 1:1 map of RTP to IEEE80211 packets for minimum latency (doesn't serialize to byte stream)
8-
- Smart FEC support (immediately yield packet to video decoder if FEC pipeline without gaps)
7+
- **1:1 map of RTP to IEEE80211 packets for minimum latency** (doesn't serialize to byte stream)
8+
- **Smart FEC support** (there are many FEC improvements which allow to reduce latency in case of packet loss)
99
- [Bidirectional mavlink telemetry](https://github.com/svpcom/wfb-ng/wiki/Setup-HOWTO). You can use it for mavlink up/down and video down link.
10-
- IP-over-WFB tunnel support. You can transmit ordinary ip packets over WFB link. Note, don't use ip tunnel for high-bandwidth transfers like video or mavlink. It uses less efficient FEC coding and doesn't aggregate small packets.
11-
- Automatic TX diversity (select TX card based on RX RSSI)
12-
- Stream encryption and authentication ([libsodium](https://download.libsodium.org/doc/))
13-
- Distributed operation. It can gather data from cards on different hosts. So you don't limited to bandwidth of single USB bus.
14-
- Aggregation of mavlink packets. Doesn't send wifi packet for every mavlink packet.
10+
- **IPv4 tunnel for generic usage.** You can transmit ordinary ip packets over WFB link. Note, don't use ip tunnel for high-bandwidth transfers like video or mavlink because it has more overhead than raw udp streams.
11+
- **Automatic TX diversity** (select TX card based on RX RSSI)
12+
- **Stream encryption and authentication** ([libsodium](https://download.libsodium.org/doc/))
13+
- **Distributed operation.** It can gather data from cards on different hosts. So you don't limited to bandwidth of single USB bus.
14+
- **Aggregation of mavlink and tunnel packets.** Doesn't send wifi packet for every mavlink or tunnel packet.
15+
- **Dynamic FEC and radio modulation.** You can change channel capacity/reliability without link interruption.
16+
- **Full channel state logging including mavlink parser.** You can log all telemetry and link state for future offline debug.
17+
- **Support for traffic shaper**. You can use standard linux traffic shapers to priority different channels and/or data/fec packets.
1518
- Enhanced [OSD](https://github.com/svpcom/wfb-ng-osd) for Raspberry PI (consume 10% CPU on PI Zero) or any other system which
16-
supports gstreamer (Linux X11, etc). Compatible with any screen resolution. Supports aspect correction for PAL to HD scaling.
17-
- Provides IPv4 tunnel for generic usage
19+
supports gstreamer and OpenGL (Linux X11/Wayland, etc). Compatible with any screen resolution.
20+
- Supported CPU architectues: **arm32v7, arm64v8, amd64, mips64le, s390x, ppc64le, i386**. I.e. any linux with kernel >= 4.x and usb port.
1821

1922
> :warning: **Warranty/Disclaimer** <br />
2023
> This is free software and comes with no warranty, as stated in parts 15 and 16 of the GPLv3 license. The creators and contributors of the software are not responsible for how it is used.
@@ -26,9 +29,20 @@ If you like WFB-ng you can support author via:
2629
- https://boosty.to/svpcom/donate
2730
- `bitcoin:bc1qfvlsvr0ea7tzzydngq5cflf4yypemlacgt6t05`
2831

32+
## Wiki:
33+
See https://github.com/svpcom/wfb-ng/wiki for additional info
34+
35+
## Community support:
36+
Telegram group: (**wfb-ng support**) https://t.me/wfb_ng
37+
Please note, that it is only one official group.
38+
39+
## Supported WiFi hardware:
40+
- **RTL8812au**. (stable) 802.11ac capable. [**Requires external patched driver!**](https://github.com/svpcom/rtl8812au) System was tested with ALPHA AWUS036ACH on both sides in 5GHz mode.
41+
- **RTL8812eu**. (stable) 802.11ac capable. [**Requires external patched driver!**](https://github.com/svpcom/rtl8812eu) System was tested with [LB-LINK's BL-M8812EU2 module](https://www.lb-link.com/product_36_183.html)
42+
2943
## Getting Started
3044

31-
For detailed instructions on how to get started read through
45+
For detailed instructions on how to get started read through
3246
[PX4-Guide](https://docs.px4.io/main/en/companion_computer/video_streaming_wfb_ng_wifi.html)
3347
and follow the [Setup HowTo](https://github.com/svpcom/wfb-ng/wiki/Setup-HOWTO)
3448

@@ -64,24 +78,25 @@ sudo reboot
6478
wfb-cli gs
6579
```
6680

67-
### Quick start using Ubuntu Ground Station
81+
### Quick start using Debian or Ubuntu Ground Station
6882

69-
- Install patched `RTL8812AU`driver:
83+
- Install patched `RTL8812AU` or `RTL8812EU` driver:
7084
```
7185
sudo apt-get install dkms
86+
# For 8812au:
7287
git clone -b v5.2.20 https://github.com/svpcom/rtl8812au.git
7388
cd rtl8812au/
89+
# For 8812eu:
90+
git clone -b v5.15.0.1 https://github.com/svpcom/rtl8812eu.git
91+
cd rtl8812eu/
92+
# For both:
7493
sudo ./dkms-install.sh
7594
```
76-
- Make sure the driver is correctly installed by running the following command. You should see the WiFi card in an `unmanaged` state.
77-
```
78-
nmcli
79-
```
8095
- Get the name of the WiFi card by running:
8196
```
8297
ifconfig
8398
```
84-
- You should see output similar to:
99+
- You should see output similar to:
85100
```
86101
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 2312
87102
ether 0c:91:60:0a:5a:8b txqueuelen 1000 (Ethernet)
@@ -90,12 +105,13 @@ wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 2312
90105
TX packets 0 bytes 0 (0.0 B)
91106
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
92107
```
93-
- Copy the name of the RTL8812AU WiFi card.
94-
- Install wfb-ng. Replace `wifi0`with the previously copied name of the WiFi card.
108+
- Run `$ ethtool -i wlan0` and ensure that it show right driver: `rtl88xxau_wfb` or `rtl8812eu`
109+
- Copy the name of the RTL8812AU/EU WiFi card.
110+
- Install wfb-ng. Replace `wlan0` with the previously copied name of the WiFi card.
95111
```
96112
git clone -b stable https://github.com/svpcom/wfb-ng.git
97113
cd wfb-ng
98-
sudo ./scripts/install_gs.sh wifi0
114+
sudo ./scripts/install_gs.sh wlan0
99115
```
100116
- Done! To monitor the link use the following command on the ground station:
101117
```
@@ -105,48 +121,37 @@ wfb-cli gs
105121

106122
**Failing to get connection?**
107123

108-
Make sure the WiFi channel on the ground and on the drone are the same. To check, use:
109-
```
110-
head /etc/wifibroadcast.cfg
111-
```
112-
113-
You should see output similar to:
114-
```
115-
[common]
116-
wifi_channel = 161 # 161 -- radio channel @5825 MHz, range: 5815–5835 MHz, width 20MHz
117-
# 1 -- radio channel @2412 Mhz,
118-
# see https://en.wikipedia.org/wiki/List_of_WLAN_channels for reference
119-
```
120-
Ensure the WiFi channel selected is the same on the ground and on the drone.
124+
1. Check WFB-ng GS logs with `sudo journalctl -xu wifibroadcast@gs`. If there is any errors then try to resolve it.
125+
2. If there are any encryption errors then ensure that `drone.key` and `gs.key` on drone and gs corresponds each other.
126+
2. Make sure the WiFi channel and link domain on the ground and on the drone are the same. To check, see `/etc/wifibroadcast.cfg` and ensure that `[common] wifi_channel` and `[drone] link_domain` / `[gs] link domain` is the same on the ground and on the drone.
121127

122128
---
123129

124130

125131
## FAQ
126-
**Q: What type of data can be transmitted using WFB-NG?**
132+
**Q: What type of data can be transmitted using WFB-ng?**
127133

128-
**A:** Any UDP with packet size <= 1445. For example x264 inside RTP or Mavlink.
134+
**A:** Any UDP with packet size <= 3993. For example x264/265 inside of RTP, Mavlink or generic IPv4 via tunnel.
129135

130136
**Q: What are transmission guarantees?**
131137

132-
**A:** Wifibrodcast uses FEC (forward error correction) which can recover 4 lost packets from 12 packets block with default settings. You can tune it (both TX and RX simultaneously!) to fit your needs.
138+
**A:** WFB-ng uses FEC (forward error correction) which can recover 4 lost packets from 12 packets block with default settings. You can tune it to fit your needs.
133139

134140
**Q: Is only Raspberry PI supported?**
135141

136-
**A:** WFB-NG is not tied to any GPU - it operates with UDP packets. But to get RTP stream you need a video encoder (which encodes raw data from camera to x264 stream). In my case RPI is only used for video encoding (because RPI Zero is too slow to do anything else) and all other tasks (including WFB-NG) are done by other board (NanoPI NEO2).
142+
**A:** WFB-ng is not tied to any GPU - it operates with UDP packets. But to get RTP stream you need a video encoder (which encodes raw data from camera to x264 stream). In my case RPI is only used for video encoding (because RPI Zero is too slow to do anything else) and all other tasks (including WFB-ng) are done by other board (NanoPI NEO2).
137143

138144
**Q: What is a difference from original wifibroadcast?**
139145

140146
**A:** Original version of wifibroadcast uses a byte-stream as input and splits it to packets of fixed size (1024 by default). If radio packets were lost and this is not corrected by FEC you'll get a hole at random (unexpected) place of stream. This is especially bad if data protocol is not resistant to (was not desired for) such random erasures. So i've rewritten it to use UDP as data source and pack one source UDP packet into one radio packet. Radio packets now have variable size depending on payload size. This reduces video latency a lot.
141147

142148
## Theory
143-
WFB-NG puts the wifi cards into monitor mode. This mode allows to send and receive arbitrary packets without association and waiting for ACK packets.
149+
WFB-ng puts the wifi cards into monitor mode. This mode allows to send and receive arbitrary packets without association and waiting for ACK packets.
144150
- [WFB-ng design and protocol description](https://github.com/svpcom/wfb-ng/blob/master/doc/wfb-ng-std-draft.md)
145151
- [Analysis of Injection Capabilities and Media Access of IEEE 802.11 Hardware in Monitor Mode](https://github.com/svpcom/wfb-ng/blob/master/doc/Analysis%20of%20Injection%20Capabilities%20and%20Media%20Access%20of%20IEEE%20802.11%20Hardware%20in%20Monitor%20Mode.pdf)
146152
- [802.11 timings](https://github.com/ewa/802.11-data)
147153

148-
Sample usage chain:
149-
-------------------
154+
## Sample usage chain:
150155
```
151156
Camera -> gstreamer --[RTP stream (UDP)]--> wfb_tx --//--[ RADIO ]--//--> wfb_rx --[RTP stream (UDP)]--> gstreamer --> Display
152157
```
@@ -169,8 +174,8 @@ To decode:
169174
! rtph264depay ! avdec_h264 ! clockoverlay valignment=bottom ! autovideosink fps-update-interval=1000 sync=false
170175
```
171176

172-
HOWTO build:
173-
----------------------
177+
## HOWTO build:
178+
174179
For development (inline build)
175180
```
176181
make
@@ -200,17 +205,3 @@ wfb_keygen
200205
```
201206
Leave them in place for development build or copy to `/etc` for binary install.
202207
Put `drone.key` to drone and `gs.key` to gs.
203-
204-
Supported WiFi hardware:
205-
------------------------
206-
- **RTL8812au**. (stable) 802.11ac capable. [**Requires external patched driver!**](https://github.com/svpcom/rtl8812au) System was tested with ALPHA AWUS036ACH on both sides in 5GHz mode.
207-
- **RTL8812eu**. (beta) 802.11ac capable. [**Requires external patched driver!**](https://github.com/svpcom/rtl8812eu) System was tested with [LB-LINK's BL-M8812EU2 module](https://www.lb-link.com/product_36_183.html)
208-
209-
Wiki:
210-
-----
211-
See https://github.com/svpcom/wfb-ng/wiki for additional info
212-
213-
Community support:
214-
---------------
215-
Telegram group: (**wfb-ng support**) https://t.me/wfb_ng
216-
Please note, that it is only one official group.

0 commit comments

Comments
 (0)