Since most cameras have very little flash memory, OpenIPC firmware images don't contain many wifi drivers, as they can easily be 1.5MB+ per driver. This means that in many cases, you will have to add the appropriate wifi driver to your firmware image.
You will need a Linux environment. First download the OpenIPC firmware repository:
git clone https://github.com/OpenIPC/firmware.git openipc-firmware
cd openipc-firmware
Install packages required for building:
sudo make deps
Here are some of the most common wifi driver packages:
BR2_PACKAGE_AIC8800_OPENIPC
1. Select general ATBM driver:
BR2_PACKAGE_ATBM60XX
2. Enable the driver for your specific card:
BR2_PACKAGE_ATBM60XX_MODEL_601X
BR2_PACKAGE_ATBM60XX_MODEL_602X
BR2_PACKAGE_ATBM60XX_MODEL_603X
BR2_PACKAGE_ATBM60XX_MODEL_6041
3. Set usb or sdio:
BR2_PACKAGE_ATBM60XX_INTERFACE_USB
BR2_PACKAGE_ATBM60XX_INTERFACE_SDIO
Example: to build atbm603x_wifi_usb:
BR2_PACKAGE_ATBM60XX=y
BR2_PACKAGE_ATBM60XX_MODEL_603X=y
BR2_PACKAGE_ATBM60XX_INTERFACE_USB=y
SSV615X/SSV625X, USB ID 0x6000:
BR2_PACKAGE_SSV615X_OPENIPC
SSV635X, USB ID 0x6011:
BR2_PACKAGE_SSV635X_OPENIPC
BR2_PACKAGE_MT7601U_OPENIPC
Note: for MT7601U there are two different drivers. The mainline kernel driver
(mt7601u.ko, enabled via the kernel config) and the vendor-lineage MediaTek
DPO STA driver (mt7601sta.ko, built by BR2_PACKAGE_MT7601U_OPENIPC, with
cfg80211 support so the interface is a plain wlan0 and wpa_supplicant drives
it as usual). They are not equivalent: on a Hi3518EV200 camera with a USB
148f:7601 dongle, measured on the same access point and channel, the mainline
driver managed only 0.4–1.0 Mbps transmit (with repeated mt7601u_mcu_wait_resp retrying in dmesg and gateway RTT spikes to 800+ ms), while mt7601sta reached
15–17 Mbps transmit with clean 9.7 ms RTT — the difference between an RTSP
stream that lags by seconds and one that keeps its send queue empty. If your
video stalls on this chip while download speed looks fine, measure the upload
direction and try the STA driver. Do not swap the two drivers on a live system
(rmmod/modprobe churn can wedge the dongle MCU until a power cycle) — pick one
at boot.
BR2_PACKAGE_SSW101B
BR2_PACKAGE_RTL8188EUS_OPENIPC
BR2_PACKAGE_RTL8188FU_OPENIPC
BR2_PACKAGE_RTL8189ES_OPENIPC
BR2_PACKAGE_RTL8189FS_OPENIPC
BR2_PACKAGE_RTL8192EU_OPENIPC
BR2_PACKAGE_RTL8733BU_OPENIPC
BR2_PACKAGE_RTL8812AU_OPENIPC
Take note of the BR2_PACKAGE variable for the driver you need. It may
be useful to observe the boot messages from the original firmware to
determine the network device and interface type since it may not be
obvious from looking at the board. Seeing atbm603x_wifi_usb in the
boot messages suggests that this camera has an atbm603x wifi device
connected internally over USB.
The firmware configuration files are ordered per chipset in the br-ext-chip-*directories. Navigate to the directory for the chipset you are building for, then navigate to the /configs/ directory.
Example: you have a hisilicon chipset:
cd br-ext-chip-hisilicon/configs/
Inside you will see a number of _defconfig files. Open the file for your desired chip and firmware flavor in a text editor.
Add the appropriate BR2_PACKAGE variable to this file, adding =y to the end of the variable.
Example: you want to add the RTL8188EUS driver:
BR2_PACKAGE_RTL8188EUS_OPENIPC=y
Return to the root directory of the openipc firmware directory openipc-firmware/.
Run make and select the configuration you have edited in the previous step.
Alternatively, you can run make BOARD=<your_config>, where <your_config> is the name of the config file you have just edited, minus the _defconfig
Example: you want to build ultimate for hi3516ev200:
make BOARD=hi3516ev200_ultimate
When the build is complete, you will find the output in the output/images/ directory:
./rootfs.hi3516ev200.cpio
./openipc.hi3516ev200-nor-ultimate.tgz
./rootfs.squashfs.hi3516ev200
./rootfs.hi3516ev200.tar
./uImage.hi3516ev200
You can now use rootfs.squashfs.* and uImage.* with sysupgrade or your preferred update mechanism.
For additional wifi configuration, see wireless settings.
For more information about building OpenIPC from source, see Source code.