Installing Adaptive Link
How Adaptive-Link Works
Wireless communication can transmit data at high speeds over short distances with a strong signal, or slowly but over longer distances with a weaker signal.
OpenIPC allows you to choose one fixed link speed and video bitrate. Default:
- Bitrate: 4 Mbps
- Channel Width: 20 MHz
- MCS: 1
- FEC: 8/12
- Guard Interval: long
This is a “universal” profile — moderate quality and average range.
Adaptive-Link solves this by automatically selecting the best link and video profile based on signal quality (RSSI and SNR).
Strong signal = high speed and quality
Weak signal = long-range profile and lower bitrate
How It Works
- On the Ground Station, alink_gsmonitors RSSI and SNR, calculates a final “score” (1000–2000), and sends it to the drone.
- On the drone, alink_dronereceives the score and selects the appropriate profile from/etc/txprofiles.conf.
- Profile transitions are controlled via /etc/alink.conf.
Example:
rssi_min = -80rssi_max = -40snr_min = 12snr_max = 36If RSSI = -60 and SNR = 20:
- RSSI score = 1500
- SNR score = 1333
- Final score (with 0.5/0.5 weights) ≈ 1416
- alinkselects profile:- 1051 - 1500
Installation
On Drone (OpenIPC)
cd /etccurl -L -o alink_install.sh https://raw.githubusercontent.com/OpenIPC/adaptive-link/refs/heads/main/alink_install.shchmod +x alink_install.sh./alink_install.sh drone installrebootAdd to autostart:
/etc/rc.local >>  alink_drone &On Ground Station (Radxa / Android / PC)
sudo curl -L -o alink_install.sh https://raw.githubusercontent.com/OpenIPC/adaptive-link/refs/heads/main/alink_install.shsudo chmod +x alink_install.shsudo ./alink_install.sh gs installConfig will be located at:
- /config/alink_gs.conf, or
- /home/radxa/alink_gs.conf, or
- /etc/alink_gs.conf
Configuration Files
Profile Configuration: /etc/txprofiles.conf
Example configuration:
999 - 999 long 0 8 12 1999 10 30 0,0,0,0 20 -121000 - 1050 long 0 8 12 2000 10 30 0,0,0,0 20 -121051 - 1500 long 1 8 12 4000 10 25 0,0,0,0 20 -121501 - 1950 long 2 8 12 8000 10 20 12,6,6,12 20 -121951 - 2001 short 2 8 12 9000 10 20 12,6,6,12 20 -12Parameter TX profile
| Parameter | Description | 
|---|---|
| Range | Score range where this profile applies | 
| GI (Guard Interval) | short: higher speed, less protectionlong: more reliable at long range | 
| MCS (Modulation and Coding Scheme) | Lower value = lower speed, better stability Higher value = higher throughput, requires stronger signal | 
| FEC (Forward Error Correction) | Example: 8/12means 8 bits data, 4 bits for error correction  Lower ratio = faster speed, less error protection | 
| Bitrate | Video stream speed in bits per second Higher value = better quality, more bandwidth usage | 
| GOP (Group of Pictures) | Determines how often keyframes appear Lower value = more I-frames, better recovery from packet loss | 
| Pwr (Transmit Power) | Transmission power of the radio signal Higher power = longer range, more interference | 
| roiQP (Region of Interest QP) | Prioritizes video quality in important parts of the frame Lower value = better quality in the ROI area | 
| Bandwidth | Width of the radio channel in MHz Wider = higher speed, narrower = better range | 
| qpDelta | Global video compression tuning Lower value = higher quality, less compression | 
Behavior Configuration: /etc/alink.conf
Example configuration:
rssi_weight=0.3snr_weight=0.7fallback_ms=1000hold_fallback_mode_s=3min_between_changes_ms=150hold_modes_down_s=4hysteresis_percent=15| Parameter | Description | 
|---|---|
| rssi_weight | Weight given to RSSI (Received Signal Strength Indicator) in link quality calculations. Value of 0.3 means RSSI contributes 30% to the overall link quality assessment. | 
| snr_weight | Weight given to SNR (Signal-to-Noise Ratio) in link quality calculations. Value of 0.7 means SNR contributes 70% to the overall link quality assessment. | 
| fallback_ms | Time in milliseconds (1000ms = 1 second) the system waits before activating fallback mode when signal deteriorates. | 
| hold_fallback_mode_s | Duration in seconds (3s) the system remains in fallback mode even if signal improves, ensuring stability before switching back. | 
| min_between_changes_ms | Minimum time in milliseconds (150ms) between transmission mode changes, preventing rapid fluctuations. | 
| hold_modes_down_s | Time in seconds (4s) the system maintains lower transmission modes before attempting to increase quality/speed again. | 
| hysteresis_percent | Percentage buffer (15%) required for a mode change, preventing minor signal fluctuations from causing unnecessary mode switches. | 
Troubleshooting
If the drone stays in long-range mode (profile 999):
- Check ground station transmitter power
- Verify antenna connections
- Review /etc/txprofiles.confsettings
If video quality is poor despite strong signal:
- Check bitrate settings in /etc/txprofiles.conf
- Ensure RSSI and SNR weights in /etc/alink.confare set correctly
If the system frequently changes settings:
- Increase min_between_changes_msvalue in/etc/alink.conf
- Increase hysteresis_percentvalue in/etc/alink.conf
Recommendations
- Don’t choose profiles with high bitrate if your system can’t handle the traffic
- Always tailor txprofiles.confto your adapter — especially power levels
- Consider your specific use case when configuring profiles