Releases: svpcom/wfb-ng
Release 25.01
Release notes:
New features:
- Runtime fec and radio tune via
wfb_tx_cmd
without restart - Distributed mode. Now you can use any amount of hosts with any amount of wifi adapters as single GS or Drone instance.
- Support for OpenWrt. Now you can use OpenWrt 24.10-based router as RX-only (most of routers) or RX/TX (only ath9k SoC based) node in distributed mode.
- JSON API for link state telemetry integration with side projects.
- Radxa Zero 3W/3E and Orange PI5 are supported now in wfb-ng-osd (via libdrm hw overlay on top of gstreamer window)
- RTSP proxy. It allows to have multiple video consumers on the GS.
- WiFi card autodetection. No need to edit
/etc/default/wifibroadcast
for simple setups. - apt repository for wfb-ng and wfb-ng-osd packages
- drone auto provisioning protocol support
- Optional derivation of encryption keys from user provided password.
radxa3 image credentials: rock/rock
rpi3 image credentials: pi/raspberry
Release 25.01-rc2
Release notes:
- Added distributed mode. Now you can use any amount of hosts with any amount of wifi adapters as single GS or Drone instance.
- Added support for OpenWrt. Now you can use OpenWrt 24.10-based router as RX-only (most of routers) or RX/TX (only ath9k SoC based) node in distributed mode.
- Added JSON API for link state telemetry integration with side projects.
- Radxa Zero 3W/3E and Orange PI5 are supported now in wfb-ng-osd (via libdrm hw overlay on top of gstreamer window)
- Added rtsp proxy. It allows to have multiple video consumers on the GS.
- Added wifi card autodetection
- Added apt repository for wfb-ng and wfb-ng-osd packages
- Added drone auto provisioning protocol support
radxa3 image credentials: rock/rock
rpi3 image credentials: pi/raspberry
Release 24.08.3
This is a bugfix release.
Changes:
- Fix handling of zero agg_timeout
Use RPI image from 24.08 release and update wfb-ng via cd wfb-ng && git pull && make deb && sudo dpkg -i deb_dist/*.deb
Release 25.01-rc1
Release notes:
- Added distributed mode. Now you can use any amount of hosts with any amount of wifi adapters as single GS or Drone instance.
- Added support for OpenWrt. Now you can use OpenWrt 24.10-based router as RX-only (most of routers) or RX/TX (only ath9k SoC based) node in distributed mode.
- Added JSON API for link state telemetry integration with side projects.
- Radxa Zero 3W/3E and Orange PI5 are supported now in wfb-ng-osd (via libdrm hw overlay on top of gstreamer window)
Release 24.08.2
This is a bugfix release.
Changes:
- Fixed msgpack compatibility issues
wfb-ng-24.09.23
This is a pre-release for openwrt evaluation
Release 24.08.1
This is a bugfix release on top of 24.08
Changes:
- Fixed incorrect array indexing inside of wfb_tx in mirror mode
Release 24.08
Changes:
- [core] Using raw sockets for injection instead of pcap
- [core] Added TX injection measurements
- [core] Added SNR, frequency and MCS reporting for RX.
- [core] Added initial support for using wfb_rx as shared library (used by external projects like android client with userspace wifi driver)
- [core] Added support for VHT modes
- [core] Added support for 8812eu card. Comparing to 8812au it supports 10MHz channels and thermal state reporting
- [core] Added experimental support for large packets. Now max MTU is 3993 instead of 1445, but for mavlink and tunnel it use old value by default for compatibility with old clients.
- [cli] Large UI refactoring:
- Show MCS, bandwidth and used FEC scheme
- Show Radio and UDP flow rates
- Show TX injection measurements
- Support live terminal resize
- [core] Added optional logging for radio channel stats and mavlink messages. Now you have full telemetry and link state log for offline debug
- [core] Added optional delay between sending each FEC packet. This is needed if you don't want to loose all FEC packets due to radio interference
- [core] Added experimental traffic shaper support. You can use standard linux
tc
infrastructure for wfb-ng traffic management. For example add different priority to different streams. See example inscripts/tc.sh
- [core] Added ability to add optional attributes to session packet without breaking protocol format. This is reserved for future use.
- [core] Added dynamic FEC and MCS change in wfb_tx. You can use wfb_tx_cmd or write your own client to switch FEC and/or MCS settings without stream interruption.
- [core] Changed TX card selection algorithm. Now only cards with near-maximum RX packet counter will be used in RSSI filtering. This will allow to ignore cards which reports high RSSI, but loose a lot of packets.
- [core] Encode frequency field in wrxfwd_t in the network byte order
- [core] Use only ip address of forwarder in antenna_id inside of aggregator.
Bug fixes:
- Fixed compatibility with python-3.12
- Fixed option name collision in config file.
mirror
url (used for OSD) renamed toosd
to prevent conflict with boolmirror
option ( mirror packets via all cards for redundancy)
Compatibility:
Radio protocol should be compatible with 23.08 if now tags added to session packets (default behavior for 24.08 but can change in future releases) and using MTU <= 1445
Supported WiFi harware:
- RTL8812au. (stable) 802.11ac capable. Requires external patched driver! System was tested with ALPHA AWUS036ACH on both sides in 5GHz mode.
- RTL8812eu. (stable) 802.11ac capable. Requires external patched driver! System was tested with LB-LINK's BL-M8812EU2 module
Supported platforms:
WFB-ng should work on any linux based (little or big-endian) machines with usb port.
All builds are automatically tested on debian-11,12 and ubuntu-20.04, 22.04, 24.04 on following hardware platforms:
arm32v7
- debian and ubuntuarm64v8
- debian and ubuntuamd64
- debian and ubuntumips64le
- debians390x
- debianppc64le
- debian
See .github/workflows
for reference
Large packets note:
#define WIFI_MTU 4045
// Max injected packet size including all wfb-headers.
// Please note, that resulting data packet size depends from input UDP packet size
// and FEC packet size is max of all UDP packet sizes in this block.
// I.e. you can have WIFI_MTU=4045 but if you will not feed large UDP packets
// then resulting radio packets will be small.
// I've set it to 4045 to allow wfb_rx compatibility with custom wfb_tx builds that can
// have maximum allowed mtu value, but I don't recommend to feed UDP packets
// larger that 1448 bytes in production.
// You can increase it if your card allow larger packets,
// but this can lead to interoperability issues and/or kernel crashes.
// Use values > 1500 with caution!
// If you use non-default MTU then you need to configure proper MTU on WiFi cards manually
// (but 8812au and 8812eu drivers set max mtu by default)
// Also you may update radio_mtu in master.cfg - set it to not more than MAX_PAYLOAD_SIZE
// or see in output of wfb_tx (Radio MTU)
// Experemental max allowed WIFI_MTU for: rtl8812au -- 4049, rtl8812eu -- 4045
Raspberry PI 3B ready to use image:
Changes:
- Added support of 8812eu cards
- Added support of cameras used libcamera protocol
Image notes:
- This image was tested on RPI3b + Alfa AWUS036ACH + PI Camera. Use native ("thick") USB3 cable from this card. If you have issues with different HW setup then try to test this setup first before issuing bug report.
- OSD will not work on RPI4 due to dropped OpenVG support.
- If you use high-power cards like "taobao card" then you must use external high-current power supply and low-esr capacitor on the card. Don't power them from USB!
Gallery
Telegram group: (wfb-ng support) https://t.me/wfb_ng
Please note, that it is only one official group.
Release 24.08-rc2
Changes vs 24.08-rc1
- Encode frequency field in wrxfwd_t in the network byte order
- Use only ip address of forwarder in antenna_id inside of aggregator.
- Docker builder cleanup
- master.cfg cleanups
- Build from tgz now works
Release 24.08-rc1
This is the first release candidate for 24.08
Changes:
- [core] Using raw sockets for injection instead of pcap
- [core] Added TX injection measurements
- [core] Added SNR, frequency and MCS reporting for RX.
- [core] Added initial support for using wfb_rx as shared library (used by external projects like android client with userspace wifi driver)
- [core] Added support for VHT modes
- [core] Added support for 8812eu card. Comparing to 8812au it supports 10MHz channels and thermal state reporting
- [core] Added experimental support for large packets. Now max MTU is 3993 instead of 1445, but for mavlink and tunnel it use old value by default for compatibility with old clients.
- [cli] Large UI refactoring:
- Show MCS, bandwidth and used FEC scheme
- Show Radio and UDP flow rates
- Show TX injection measurements
- Support live terminal resize
- [core] Added optional logging for radio channel stats and mavlink messages. Now you have full telemetry and link state log for offline debug
- [core] Added optional delay between sending each FEC packet. This is needed if you don't want to loose all FEC packets due to radio interference
- [core] Added experimental traffic shaper support. You can use standard linux
tc
infrastructure for wfb-ng traffic management. For example add different priority to different streams. See example inscripts/tc.sh
- [core] Added ability to add optional attributes to session packet without breaking protocol format. This is reserved for future use.
- [core] Added dynamic FEC and MCS change in wfb_tx. You can use wfb_tx_cmd or write your own client to switch FEC and/or MCS settings without stream interruption.
- [core] Changed TX card selection algorithm. Now only cards with near-maximum RX packet counter will be used in RSSI filtering. This will allow to ignore cards which reports high RSSI, but loose a lot of packets.
Bug fixes:
- Fixed compatibility with python-3.12
- Fixed option name collision in config file.
mirror
url (used for OSD) renamed toosd
to prevent conflict with boolmirror
option ( mirror packets via all cards for redundancy)
Compatibility:
Radio protocol should be compatible with 23.08 if now tags added to session packets (default behavior for 24.08 but can change in future releases) and using MTU <= 1445
Supported WiFi harware:
- RTL8812au. (stable) 802.11ac capable. Requires external patched driver! System was tested with ALPHA AWUS036ACH on both sides in 5GHz mode.
- RTL8812eu. (stable) 802.11ac capable. Requires external patched driver! System was tested with LB-LINK's BL-M8812EU2 module
Supported platforms:
WFB-ng should work on any linux based (little or big-endian) machines with usb port.
All builds are automatically tested on debian-11,12 and ubuntu-20.04, 22.04, 24.04 on following hardware platforms:
arm32v7
- debian and ubuntuarm64v8
- debian and ubuntuamd64
- debian and ubuntumips64le
- debians390x
- debianppc64le
- debian
See .github/workflows
for reference
Large packets note:
#define WIFI_MTU 4045
// Max injected packet size including all wfb-headers.
// Please note, that resulting data packet size depends from input UDP packet size
// and FEC packet size is max of all UDP packet sizes in this block.
// I.e. you can have WIFI_MTU=4045 but if you will not feed large UDP packets
// then resulting radio packets will be small.
// I've set it to 4045 to allow wfb_rx compatibility with custom wfb_tx builds that can
// have maximum allowed mtu value, but I don't recommend to feed UDP packets
// larger that 1448 bytes in production.
// You can increase it if your card allow larger packets,
// but this can lead to interoperability issues and/or kernel crashes.
// Use values > 1500 with caution!
// If you use non-default MTU then you need to configure proper MTU on WiFi cards manually
// (but 8812au and 8812eu drivers set max mtu by default)
// Also you may update radio_mtu in master.cfg - set it to not more than MAX_PAYLOAD_SIZE
// or see in output of wfb_tx (Radio MTU)
// Experemental max allowed WIFI_MTU for: rtl8812au -- 4049, rtl8812eu -- 4045