I. Cài đặt Raspberry Pi OS lên Pi Zero 2 W
Kết quả sau khi cài OS, login bằng VN
Trên Pi4 image hiện tại đã có tích hợp sẵn VNC server, vì vậy chỉ cần kích hoạt trong khi cài đặt thì chúng ta có thể remote Pi4 thông qua mạng mà không cần sử dụng bàn phím riêng.
Sau khi cài đặt xong, hãy kết nối module wifi RTL8812AU với Pi4 qua USB Port, kiểm tra việc nhận diện và driver của RTL8812AU.
Tiếp theo, cần kiểm tra khả năng nhận diện cổng vật lý của RTL8812 qua USB của Pi4, sử dụng: lsusb
II. Cài đặt các package cần thiết cho OPENIPC
1) Cài đặt driver cho RTL8812AU
a) Cài đặt các pakage cần thiết
sudo apt install dkms git python3-all-dev net-tools virtualenv fakeroot debhelper python3-twisted libpcap-dev python3-pyroute2 python3-future python3-all libsodium-dev
b) Tải driver và cài đặt:
- Tải mã nguồn từ Github:
git clone -b v5.6.4.2 [https://github.com/aircrack-ng/rtl8812au.git](https://github.com/aircrack-ng/rtl8812au.git)
- Các lỗi có thể phát sinh và cách khắc phục lỗi:
– Error: “Cloning into ‘rtl8812au’… fatal: unable to access ‘https://github.com/aircrack-ng/rtl8812au.git/‘: Could not resolve host: github.com”,
– Khắc phục lỗi:
+ Liệt kê các kết nối mạng hiện tại:
nmcli device status
+ Cập nhật DNS bằng tên connection, ví dụ “Wired connection 1” hoặc “Wi-Fi tên”
sudo nmcli connection modify "<YOUR-CONN-NAME>" ipv4.dns "8.8.8.8 1.1.1.1" ipv4.ignore-auto-dns yes sudo nmcli connection up "<YOUR-CONN-NAME>"
– Error: Bộ nhớ Pi Zero 2 W bị giới hạn.
+ Tạo swap 1GB tạm thời
sudo fallocate -l 1G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile
+ Kiểm tra lại
free -h
+ Sau compile / install, tắt và xóa
sudo swapoff /swapfile sudo rm /swapfilec) Tiếp tục thực hiện cài đặt:
- Tiếp tục cài đặt:
cd rtl* sudo apt-get update sudo apt-get install build-essential libelf-dev linux-headers-uname -r sudo apt-get install raspberrypi-kernel-headers sed -i 's/CONFIG_PLATFORM_I386_PC = y/CONFIG_PLATFORM_I386_PC = n/g' Makefile sed -i 's/CONFIG_PLATFORM_ARM64_RPI = n/CONFIG_PLATFORM_ARM64_RPI = y/g' Makefile sudo make sudo make install
- Chờ Pi Zero 2 biên dịch driver


sudo cp 88XXau.ko /lib/modules/$(uname -r)/kernel/drivers/net/wireless/ sudo depmod -a sudo modprobe 88XX
- Cắm nguồn cho RTL8812AU, kiểm tra lại xem đã nhận chưa

Sau đó thiết lập các mode như monitor, channel….
Gặp lỗi này

- Khac phuc loi:
rfkill list all sudo rfkill unblock all rfkill list #kiem tra dam bao ko bi DOWN card wifi

Sau đó thực hiện lại các lệnh trên, và đây là kết quả:
sudo ip link set wlan1 down sudo iwconfig wlan1 channel 161 sudo iw dev wlan1 set type monitor sudo ip link set wlan1 up sudo iw wlan1 set txpower fixed 2000

Chúng ta đã thấy RTL8812AU ở chế độ Monitor mode, channel 161 (5.08GHz)
b) Cài tiếp các thứ còn lại: libsodium, WFB-NG
- libsodium
git clone [https://github.com/jedisct1/libsodium](https://github.com/jedisct1/libsodium) --branch stable cd libsodium ./configure make && make check
Kết quả

sudo make install

c) Cài WFB-NG
git clone -b stable [https://github.com/svpcom/wfb-ng.git] cd wfb-ng sudo ./scripts/install_gs.sh wlan1
(Chú ý mỗi lần thực hiện lệnh này sẽ có một gs.key mới, vì vậy cần copy lại gs.key đã lưu trước đó từ Camera OPENIPC)
- –start,stop restart service
sudo systemctl status wifibroadcast@gs sudo systemctl stop wifibroadcast@gs sudo systemctl start wifibroadcast@gs
–start WFB
wfb-cli gs
Trên máy ground station (chạy OpenIPC ground setup) copy file gs.key vào thư mục:
sudo cp gs.key /etc/gs.key
Kết quả

d) Cài Gstreamer
sudo apt update sudo apt install -y gstreamer1.0-tools gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-x gstreamer1.0-gl gstreamer1.0-v4l2
- Kết quả: Test không ổn vì vượt quá dung lượng RAM của Pi Zero 2W.
Tiến hành test với relay UDP trên Pi Zero
-
Stream UDP đến một địa chỉ xác định (PC hoặc Điện thoại)
- Để có thể stream UDP đến một địa chỉ xác định (PC hoặc Điện thoại) hãy thực hiện lệnh sau để sửa, thay xx.xx.xx.xx bằng địa chỉ bạn muốn stream tới:
sudo sed -i "/[gs_video]/,/^$/ s|peer = 'connect://[0-9.]*:5600'|peer = 'connect://xx.xx.xx.xx:5600'|" /wfb-ng/script/install_gs.sh
- Sau đó khởi động QGC lên hoặc một phần mềm bất kỳ có thể decode UDP H.264:

b. Thiết lập nâng cao, tự động thực hiện wfb và stream UDP
- Đặt file .ko đúng vị trí:
sudo mkdir -p /lib/modules/$(uname -r)/kernel/drivers/net/wireless sudo cp ~/rtl8812au/88XXau.ko /lib/modules/$(uname -r)/kernel/drivers/net/wireless/ sudo depmod -a
- Kiểm tra modprobe thủ công (đảm bảo kernel đã “nhận diện”)
sudo modprobe 88XXau lsmod | grep 88
- Tạo file và cập nhật:
sudo nano /etc/systemd/system/rtl88xxau.service
- Thêm vào file nội dung sau:
[Unit]
Description=Load 88XXau WiFi driver, configure wlan1 (monitor ch161 tx2000), and start Wifibroadcast
After=multi-user.target
Wants=network.target
[Service]
Type=oneshot
ExecStart=/bin/bash -c "/sbin/modprobe 88XXau; \
echo '[rtl88xxau] Loading module 88XXau...'; \
echo '[rtl88xxau] Waiting for wlan1 to appear...'; \
for i in {1..25}; do \
if ip link show wlan1 >/dev/null 2>&1; then break; fi; \
sleep 1; \
done; \
if ! ip link show wlan1 >/dev/null 2>&1; then \
echo '[rtl88xxau] wlan1 not found after waiting, aborting.' >&2; exit 1; \
fi; \
echo '[rtl88xxau] wlan1 found, configuring...'; \
sleep 5; \
/sbin/ifconfig wlan1 down; \
/sbin/iw reg set US; \
/usr/sbin/rfkill unblock all; \
/sbin/iw dev wlan1 set type monitor; \
/sbin/iw dev wlan1 set channel 161; \
/sbin/ifconfig wlan1 up; \
sleep 2; \
/sbin/iw dev wlan1 set txpower fixed 2000; \
echo '[rtl88xxau] wlan1 set to monitor, ch161, tx2000mW.'; \
sleep 3; \
/bin/systemctl start wifibroadcast@gs; \
echo '[rtl88xxau] Wifibroadcast@gs started successfully.'"
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
- Áp dụng cấu hình:
sudo systemctl daemon-reload sudo systemctl enable rtl88xxau.service sudo systemctl restart rtl88xxau.service
- Khởi động lại và chờ kết quả:
sudo reboot



