Radxa Fogwise Airbox, also known as Fogwise BM168M, is an edge AI box powered by a SOPHON BM1684X Arm SoC with a built-in 32 TOPS TPU and a VPU capable of handling the decoding of up to 32 HD video streams. The device is equipped with 16GB LPDDR4x RAM and a 64GB eMMC flash and features two gigabit Ethernet RJ45 jacks, a few USB ports, a speaker, and more.
Radxa sent us a sample for evaluation. We’ll start the Radxa Fogwise Airbox review by checking out the specifications and the hardware with an unboxing and a teardown, before testing various AI workloads with Tensorflow and/or other frameworks in the second part of the review.
Radxa Fogwise Airbox specifications
The specifications below come from the product page as of May 30, 2024:
- SoC – SOPHON SG2300x
- CPU – Octa-core Arm Cortex-A53 processor up to 2.3 GHz
- VPU
- Decoding of up to 32x 1080p25 channels with H.265/H.264
- Full processing of 32x 1080p25 channels with decoding and AI analysis
- Encoding of up to 12x 1080p25 channels with H.265/H.264
- JPEG up to 1080p600 (no typo, that’s 600 FPS) up to 32768 x 32768
- Video post-processing such as image CSC, Resize, Crop, Padding, Border, Font, Contrast, and Brightness adjustments.
- TPU – Tensor Processing Unit with up to 24 TOPS (INT8), 12 TFLOPS (FP16/BF16) and 2 TFLOPS (FP32) with support for TensorFlow, Caffe, PyTorch, Paddle, ONNX, MXNet, Tengine, and DarkNet
- System Memory – 16GB LPDDR4X
- Storage
- 64GB onboard eMMC flash
- M.2 M Key connector for 2230 NVMe SSD
- MicroSD Card slot
- Networking
- 2x Gigabit Ethernet ports
- Optional WiFi and Bluetooth via M.2 E Key module
- USB
- 2x USB 3.0 host ports
- 1x USB Type-C Debug UART port
- Power Supply – 20V via USB Type-C port, at least 65W
- Dimensions – 104 x 84 x 52mm (metal case with active cooling)
- Temperature Range – 0°C to +45°C
- Compliance Certification – FCC / CE
The specifications and design are almost exactly the same as the Firefly AIBOX-1684X, but except for the SOPHON BM1684X (32 TOPS) used instead of the SOPHON SG2300x (24 TOPS), and the two M.2 sockets that don’t seem to be available in the Firefly AI box. At the time of the Firefly article (April 2024), I was told that “SG2300X supports open-source generative AI, while the BM1684X does not”, but it appears both chips are interchangeable for more on that below…
Based on the documentation, the Radxa Fogwise Airbox AI micro-server runs the CasaOS lightweight operating system offering a private cloud storage solution for home users. The company also offers a “Radxa Model Zoo” with ResNet-50, YOLOv5-det, YOLOv8-seg for object detection, recognition, and segmentation, and provides instructions to run LVMs or LLMs such as Stable Diffusion and Llama-3.
Fogwise “BM168M” unboxing
The Fogwise Airbox ships in a retail box that reads “Fogwise BM168M Edge Micro-Sever for AI”. Besides the typo, I was surprised by the size of the package as I expected something a bit larger similar to mini PC packages. The other thing is that it’s not called “Fogwise Airbox”, but “Fogwise BM168M” on the package.
In addition, if we look at the bottom side of the package, we can see the basic specifications that read “Power by SOPHON BM1684X” instead of “Powered by SOPHON SG2300X” as I would have expected. The package also lists the supported frameworks: PyTorch, ONNX, Baidu PaddlePaddle, Cafee, Tensforflow, MXNET, and Darknet.
Radxa Fogwise Airbox is shown on the sticker at the bottom, but since the teardown below will reveal more BM1684X strings, I asked Radxa if it was normal I have received a BM1684X device instead of one with SG2300x. I was eventually told I had received the latter as when the Model contains the string “R31” the system is based on SG2300x, while if there’s R22 it is powered by BM1684X. SG2300x and BM1684X are essentially the same chips and the main difference is that SG2300x is a SOPHGO device, while BM1684X refers to Bitmain. The latter is now focused on (crypto) mining hardware.
There’s nothing much inside the case, as the device itself takes 99% of the space, and we only have a “QC passed” sticker and a Warranty card (back side not shown on the photo above) with QR codes on the other side pointing to documentation (link not working, but I found it with a web search, see specifications section) and the community forum. This explains why the package can be so small as users will need to get their own 65W+ USB-C power adapter.
The rear panel includes two USB 3.0 ports, WAN and LAN gigabit Ethernet ports, and a USB-C port for power plus ventilation holes. The left side features a microSD card slot and a USB-C debug port.
The right side has a few holes for the built-in speaker.
Radxa Fogwise Airbox teardown
Let’s have a look inside.
We’ll need to remove the four stick rubber pads and loosen four screws to remove the bottom cover.
This reveals the M.2 Key M and Key E sockets listed in the specifications as well as the cables from two WiFi antennas. There’s a thick thermal pad that covers a chip in the middle.
It happens to be an ASMedia ASM2806 PCIe Gen3 x2 switch with four downstream ports. Let’s remove four standoffs to take the main board out of the enclosure. I also had to disconnect the wire to the speaker (shown on the left in the photo below).
The SOPHGO SG2300x processor is on the CPU module and in contact with the metal case through some thermal paste.
The top of the AIM_1684X_V1 system-on-module also features two Realtek RTL8211FG gigabit Ethernet transceivers and two Micron MT53E1G32D4NQ-053 32Gbit (4GB) LPDDR4 memory chips, meaning there are also two others underneath for a total of 16GB.
A Monolithic Power Systems (MPS) MP7475 PMIC can be found on the bottom right of the module, and a VL805 PCIe to USB 3.0 bridge is present on the mainboard for the two USB 3.0 ports.
The last notable part on the board is the APW8713 8W step-down converter. I did not remove the CPU module which is attached through a single B2B connector to the mainboard.
First try
I reassembled the device to give it a try. None of my USB-C phone chargers will reach 45W and the Raspberry Pi 5 USB-C power supply is limited to 27W, so I used a 100W GaN USB-C power supply from MINIX. I also connected an Ethernet cable to the WAN port. The system automatically started upon applying the power.
I searched for the device with nmap but nothing new showed up…
1 2 3 4 |
jaufranc@CNX-LAPTOP-5:~$ nmap -sP 192.168.31.0/24 Starting Nmap 7.80 ( https://nmap.org ) at 2024-05-31 11:03 +07 .... Nmap done: 256 IP addresses (10 hosts up) scanned in 3.88 seconds |
So I connected a USB-A to USB-C to the Debug port to access the console and see what was going on…
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
NOTICE: GPIO0: 3600 PCIe 33861041007 NOTICE: BOOT: 7000000/5/0 NOTICE: Booting Trusted Firmware NOTICE: BL1: v2.5(release):bm1686_rom_v6 NOTICE: BL1: Built : 19:08:47, Jan 24 2022 INFO: BL1: RAM 0x10002000 - 0x1000d000 INFO: BL1: Loading BL2 NOTICE: Try SPIF section B NOTICE: Locate FIP in SPI flash (DMMR) WARNING: Firmware Image Package header check failed. ERROR: No suitable image source for 1 WARNING: Failed to obtain reference to image id=1 (-2) ERROR: Failed to load BL2 firmware. NOTICE: GPIO0: 3600 PCIe 34398516996 NOTICE: BOOT: 7000000/5/0 NOTICE: Booting Trusted Firmware NOTICE: BL1: v2.5(release):bm1686_rom_v6 |
The system is stuck in a boot loop… So it looks like I have to install the image myself…
So I downloaded the Fogwise Airbox B4 image and we’re told to flash it to a microSD card with tools like Etcher, but USBImager won’t take the file… and looking into the tarball it’s not your typical img file…
So I think I’ll stop for today and carry on once the documentation has been updated… So I prepared a microSD card with a FAT32 parition and copied the file on it. After that I turned off the device, inserted the microSD card, and restarted it to start the flashing process.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 |
PCIe 110999 NOTICE: BOOT: 7000000/5/0 NOTICE: Booting Trusted Firmware NOTICE: BL1: v2.5(release):bm1686_rom_v6 NOTICE: BL1: Built : 19:08:47, Jan 24 2022 INFO: BL1: RAM 0x10002000 - 0x1000d000 NOTICE: SD initializing 100000000Hz NOTICE: GPIO0: 3600 PCIe 110999 NOTICE: BOOT: 7000000/5/0 NOTICE: Booting Trusted Firmware NOTICE: BL1: v2.5(release):bm1686_rom_v6 NOTICE: BL1: Built : 19:08:47, Jan 24 2022 INFO: BL1: RAM 0x10002000 - 0x1000d000 NOTICE: SD initializing 100000000Hz NOTICE: GPIO0: 3600 PCIe 110999 NOTICE: BOOT: 7000000/5/0 NOTICE: Booting Trusted Firmware NOTICE: BL1: v2.5(release):bm1686_rom_v6 NOTICE: BL1: Built : 19:08:47, Jan 24 2022 INFO: BL1: RAM 0x10002000 - 0x1000d000 NOTICE: SD initializing 100000000Hz NOTICE: GPIO0: 3600 PCIe 110999 NOTICE: BOOT: 7000000/5/0 NOTICE: Booting Trusted Firmware NOTICE: BL1: v2.5(release):bm1686_rom_v6 NOTICE: BL1: Built : 19:08:47, Jan 24 2022 INFO: BL1: RAM 0x10002000 - 0x1000d000 NOTICE: SD initializing 100000000Hz NOTICE: boot from SD INFO: BL1: Loading BL2 NOTICE: Locate FIP in SD FAT INFO: Loading image id=1 at address 0x10020000 INFO: Image id=1 loaded: 0x10020000 - 0x1003e32c NOTICE: BL1: Booting BL2 INFO: Entry point address = 0x10020000 INFO: SPSR = 0x3c5 NOTICE: BL2: v2.7(release):83702b19-dirty NOTICE: BL2: Built : 06:35:55, May 17 2024 INFO: BL2: Doing platform setup NOTICE: BM1684X board type: 139/54/0x11 NOTICE: interleave mode 1 NOTICE: LPDDR4x(rank: 2 + 2, freq: 4000M) init start NOTICE: Done. NOTICE: Setup A53 Lite Reset Address 00000000101ffff0 NOTICE: Release A53 Lite NOTICE: SD initializing 100000000Hz INFO: BL2: Loading image id 3 NOTICE: Locate FIP in SD FAT INFO: Loading image id=3 at address 0x300000000 INFO: Image id=3 loaded: 0x300000000 - 0x300009124 INFO: BL2: Loading image id 5 NOTICE: Locate FIP in SD FAT INFO: Loading image id=5 at address 0x308000000 INFO: Image id=5 loaded: 0x308000000 - 0x3080bba24 NOTICE: BL1: Booting BL31 INFO: Entry point address = 0x300000000 INFO: SPSR = 0x3cd NOTICE: BL31: v2.7(release):83702b19-dirty NOTICE: BL31: Built : 06:35:55, May 17 2024 INFO: ARM GICv2 driver initialized ERROR: disable secure firewall INFO: BL31: Initializing runtime services INFO: BL31: Preparing for EL3 exit to normal world INFO: Entry point address = 0x308000000 INFO: SPSR = 0x3c9 found dtb@139: bitmain-bm1684x-sm7m-v1.0 Selecting config 'bitmain-bm1684x-sm7m-v1.0' U-Boot 2022.10 83702b19-dirty (May 17 2024 - 06:35:49 +0000) Sophon BM1684 DRAM: 1 GiB Relocation Offset is: 37f49000 Relocating to 33ff49000, new gd at 33f7ffd60, sp at 33f7fe4d0 Core: 38 devices, 20 uclasses, devicetree: fit WDT: Started bm16xxwdt@69 with servicing (60s timeout) MMC: sdhc@50100000: 0, sdhc@50101000: 1 Loading Environment from FAT... ... ## Executing script at 300040000 fs reading //gpt.gz 446 bytes read in 8 ms (53.7 KiB/s) Uncompressed size: 17408 = 0x4400 MMC write: dev # 0, block # 0, count 34 ... 34 blocks written: OK fs reading //boot_emmc-boot.scr 1362 bytes read in 10 ms (132.8 KiB/s) ## Executing script at 300040000 fs reading //boot.1-of-2.gz 24653775 bytes read in 3073 ms (7.7 MiB/s) Uncompressed size: 102760448 = 0x6200000 MMC write: dev # 0, block # 8192, count 200704 ... 200704 blocks written: OK fs reading //boot.2-of-2.gz 30566 bytes read in 14 ms (2.1 MiB/s) Uncompressed size: 31457280 = 0x1E00000 .... |
This will take a few minutes and end with:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
MMC write: dev # 0, block # 29650944, count 200704 ... 200704 blocks written: OK fs reading //data.2-of-2.gz 10588 bytes read in 11 ms (939.5 KiB/s) Uncompressed size: 10866688 = 0xA5D000 MMC write: dev # 0, block # 29851648, count 21224 ... 21224 blocks written: OK eMMC update done bm savelog 452 bytes written in 10 ms (43.9 KiB/s) all done LED 'status' not found (err=-19) LED 'error' not found (err=-19) LED 'status' not found (err=-19) Please remove the installation medium, then reboot |
Let’s turn off the device, remove the microSD card (the case is hot so I used a pencil to do so), and boot it again. This time I got to a login prompt:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
jaufranc@CNX-LAPTOP-5:~$ bt No port specified, using ttyUSB0 (last registered). Use -l to list ports. Trying port ttyUSB0... Connected to ttyUSB0 at 115200 bps. Escape character is 'Ctrl-]'. Use escape followed by '?' for help. Starting Hold until boot process finishes up... Starting Terminate Plymouth Boot Screen... [ OK ] Finished Hold until boot process finishes up. [ OK ] Finished Terminate Plymouth Boot Screen. [ OK ] Started Serial Getty on ttyS0. Starting Set console scheme... [ OK ] Started Hostname Service. [ OK ] Finished Set console scheme. [ OK ] Started A high performance…er and a reverse proxy server. [ OK ] Created slice system-getty.slice. [ OK ] Started Getty on tty1. [ OK ] Reached target Login Prompts. Starting Authorization Manager... [ OK ] Started OpenBSD Secure Shell server. [ OK ] Started Authorization Manager. Ubuntu 20.04 LTS Airbox ttyS0 Airbox login: [ OK ] Finished Resize root files…m to fit available disk space. |
And the Airbox also shows with an IP address:
1 2 3 4 5 6 7 |
jaufranc@CNX-LAPTOP-5:~/Downloads$ nmap -sP 192.168.31.0/24 Starting Nmap 7.80 ( https://nmap.org ) at 2024-05-31 14:13 +07 ... Nmap scan report for Airbox (192.168.31.71) Host is up (0.00069s latency). ... Nmap done: 256 IP addresses (9 hosts up) scanned in 2.33 seconds |
But no port 81 opened as we have installed Ubuntu 20.04 and not CasaOS (as advertised in the documentation):
1 2 3 4 5 6 7 8 9 10 11 |
jaufranc@CNX-LAPTOP-5:~/Downloads$ nmap -F 192.168.31.71 Starting Nmap 7.80 ( https://nmap.org ) at 2024-05-31 14:16 +07 Nmap scan report for Airbox (192.168.31.71) Host is up (0.0011s latency). Not shown: 97 closed ports PORT STATE SERVICE 22/tcp open ssh 80/tcp open http 8888/tcp open sun-answerbook Nmap done: 1 IP address (1 host up) scanned in 0.03 seconds |
We can use the command line through the serial console or SSH using linaro username and linaro password, and run a few commands to get system information:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
linaro@192.168.31.71's password: Welcome to Ubuntu 20.04 LTS (GNU/Linux 5.4.217-bm1684-g18c6a7c915a2-dirty aarch64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage * Strictly confined Kubernetes makes edge and IoT secure. Learn how MicroK8s just raised the bar for easy, resilient and secure K8s cluster deployment. https://ubuntu.com/engage/secure-kubernetes-at-the-edge overlay / overlay rw,relatime,lowerdir=/media/root-ro,upperdir=/media/root-rw/overlay,workdir=/media/root-rw/overlay-workdir 0 0 /dev/mmcblk0p5 /media/root-rw ext4 rw,relatime 0 0 /dev/mmcblk0p4 /media/root-ro ext4 ro,relatime 0 0 Last login: Fri May 31 15:14:48 2024 linaro@Airbox:~$ cat /etc/issue Ubuntu 20.04 LTS \n \l linaro@Airbox:~$ uname -a Linux Airbox 5.4.217-bm1684-g18c6a7c915a2-dirty #4 SMP Thu May 16 09:59:04 UTC 2024 aarch64 aarch64 aarch64 GNU/Linux linaro@Airbox:~$ sudo inxi -Fc0 System: Host: Airbox Kernel: 5.4.217-bm1684-g18c6a7c915a2-dirty aarch64 bits: 64 Console: tty 0 Distro: Ubuntu 20.04 LTS (Focal Fossa) Machine: Type: ARM Device System: Radxa AICore BM1684x IO Board details: N/A CPU: Topology: 8-Core (2-Die) model: bm1684x variant: cortex-a53 bits: 64 type: MCP MCM Speed: 2300 MHz min/max: 1150/2300 MHz Core speeds (MHz): 1: 2300 2: 2300 3: 2300 4: 2300 5: 2300 6: 2300 7: 2300 8: 2300 Graphics: Message: No Device data found. Display: server: No display server data found. Headless machine? tty: 95x33 Message: Advanced graphics data unavailable in console for root. Audio: Device-1: Realtek type: USB driver: hid-generic,snd-usb-audio,usbhid Sound Server: ALSA v: k5.4.217-bm1684-g18c6a7c915a2-dirty Network: Device-1: ethernet driver: bm_dwmac Device-2: ethernet driver: bm_dwmac IF-ID-1: docker0 state: down mac: 02:42:cc:48:f3:4a IF-ID-2: dummy0 state: down mac: 5a:73:15:58:ea:4e IF-ID-3: eth0 state: up speed: 1000 Mbps duplex: full mac: 00:e0:4c:05:7b:70 IF-ID-4: eth1 state: down mac: 00:e0:4c:05:7b:71 IF-ID-5: sit0 state: down mac: 00:00:00:00 Drives: Local Storage: total: 58.24 GiB used: 3.02 GiB (5.2%) ID-1: /dev/mmcblk0 model: CUTB42 size: 58.24 GiB Partition: ID-1: / size: 5.82 GiB used: 170.2 MiB (2.9%) fs: overlay source: ERR-102 ID-2: /boot size: 127.7 MiB used: 62.2 MiB (48.7%) fs: vfat dev: /dev/mmcblk0p1 ID-3: /opt size: 1.90 GiB used: 166.8 MiB (8.6%) fs: ext4 dev: /dev/mmcblk0p6 Sensors: Message: No sensors data was found. Is sensors configured? Info: Processes: 188 Uptime: 5m Memory: 3.83 GiB used: 377.3 MiB (9.6%) Init: systemd runlevel: 5 Shell: bash inxi: 3.0.38 |
There’s also a web dashboard on port 80.
This time I’ll stop for now, and I have to figure out what to do next and learn how to use the system.
[One more small update… I’ve just realized CasaOS is not an OS, but a program installed on top of Ubuntu, Debian, etc…..
1 |
wget -qO- https://get.casaos.io | sudo bash |
]
In the second part of the review, I plan to install the OS and run large language models (LLM) and large vision models (LVM) on the system. I’d like to thank Radxa for sending the Fogwise Airbox for review. It’s now available on Aliexpress for $331 plus shipping.
Continue reading Radxa Fogwise Airbox AI box review – Part 2: Llama3, Stable Diffusion, imgSearch, Python SDK, YOLOv8
Jean-Luc started CNX Software in 2010 as a part-time endeavor, before quitting his job as a software engineering manager, and starting to write daily news, and reviews full time later in 2011.
Support CNX Software! Donate via cryptocurrencies, become a Patron on Patreon, or purchase goods on Amazon or Aliexpress
This has potential to be a very good home surveillance box if it can support frigate. Please can you test if frigate works on this box? Does the developer intend to support frigate.
I don’t see any reference to Frigate support, so it’s safe to assume it’s not working right now because Frigate would have to be updated to support the hardware accelerators in the SOPHGO BM1684X. Radxa might soon comment here to let us know if they are working on this in partnership with Frigate.
lol but why? 30W idle when you can get 3W idle with an rk3566/rk3588 which is supported by frigate
To install the system, you might try to format an SD card as FAT32 and extract the tarball contents to it. Then it should flash to the eMMC on boot. You can monitor this via serial.
I’ve just done that and updated the post. I can access the Linux command line.
Radxa also told me they will provide an IMG file so users can make use of the usual flashing tools.
Idle power consumption is about 30.3 Watts…
This thing does not seem to be good for anything. I dont get the reason why it exist. Too much heat, to less computing power, outdated SoC, closed source Software and Firmware, and so on.
There are bunch of boards out there that have same functionality, run mainline Linux and run with a fraction of the power.
It can handle 32 video streams in real-time so it should be good for video surveillance.
Most other boards don’t offer 24/32 TOPS for AI inference. It’s only interesting for AI workloads.
Typo or does it really idle at around 30W?
Not a typo.
[ “Idle power consumption is about 30.3 Watts”
What parts have most consumption influence? Configuration possibilities? (thx) ]
I would have guessed the TPU in the SoC, but I don’t understand why it would be active by default.
[ maybe because it’s useful for that conception?
“Fogwise AirBox is an embedded AI micro-server with arithmetic power up to 32TOPS@INT8, supports multiple precision (INT8, FP16/BF16, FP32), supports private GPT, text-to-image, and other mainstream AI model deployments, and is equipped with an aluminum alloy casing for deployment in harsh environments.”
and me often being astonished, why there are no configuration possibilities or monitoring tools, if that influence on power consumption on devices is getting more significant (compared to other SBCs)? (sounds unreasonable to You?)
and (btw) it’s not obvious what’s the default configuration? ]
[ “active by default”
another (unconventional) guess: comparison to temperature range from a ‘Mekotronics R57:
Temperature Range – -10 to 75°C’, while a Fogwise device can throttle above ~45°C (if not case temperature?, Dashboard describes with ‘chip junction temp’), there’s maybe limitation below 0°C without ‘heating’ from SoC (or partly from m.2 sdd) heatsink? For the Fogwise case this would be ~30-100W on an outer surface of ~57sq”/370cm² and additional airflow heat transfer. ]
Just received a 60W power consumption from Radxa and the idle power consumption with that one is 28.4W, so it saves about two Watts 🙂
I wonder if something like this would be good for a video box, like has enough A.I. TOPS to upscale dvd video 360p/480p to like 4k, one thing I doubt it has is quality video A.I. like many of the dedicated video boxes to improve video picture quality like getting rid of compression artifacts and lighting up shadows and improve overall watchability for 4k tv.
Radxa have a demo named Real-esrgan-tpu_web can upscale any image or video to 2560×1920 with face enhance, actually it can upscale x4 by realesrgan model depend on the model input. please feel free to have a look or try this repo.
Radxa has released an IMG file with CasaOS preinstalled.
https://dl.radxa.com/sg2300x/images/sdcard-radxa-airbox-b4-20240531.img.zip
Please test this with Llama3, as one of its marketing perks was that it can run llama3 pretty smoothly.