这些带有BL602芯片的原始设备可以通过WiFi烧写OpenBeken,而无需焊接。这是通过制造商的OTA机制完成的,但是要从自己的服务器进行。
具体步骤如下:
0.将设备重置为出厂设置-打关控制器4次
1.下载固件,通过项目发布目录OpenBeken下载例如OpenBL602_1.17.553_OTA.bin.xz.ota,选择对BL602芯片和OTA的版本很重要
2.在一个空闲端口(此处为1111)上启动HTTP服务器,在Linux(bash)上是这样的命令:
{
echo -ne "HTTP/1.0 200 OK\r\nContent-Length: "$(wc -c < OpenBL602_1.17.553_OTA.bin.xz.ota)"\r\n\r\n"
cat OpenBL602_1.17.553_OTA.bin.xz.ota
} | nc -l 1111
3.在第二个终端中,我们连接到设备创建的接入点,我的所有驱动程序都创建了LEDnetXXXXXXXXX形式的SSID,我在电视盒上使用armbian操作系统,因此我在wpa_supplicantLED.conf文件中创建了配置:
network={
ssid="LEDnet0033290716"
key_mgmt=NONE
}
然后我使用以下命令连接到控制器:
wpa_supplicant -i wlan0 -c wpa_supplicantLED.conf
当然,我们也可以使用图形界面从笔记本电脑进行连接。
4.连接后,设备分配给我们的ip号为10.10.123.4,我们的控制器位于10.10.123.3。控制器有几个开放端口,其中最有趣的是UDP端口48899,它支持制造商的AT命令,因此我们可以通过向控制器发送UDP数据包来检查设备的版本。例如,我们可以通过发送UDP数据包AT+LVER来检查设备的版本:
echo -e "AT+LVER\r" | nc -u 10.10.123.3 48899
得到答案:
+ok=33_48_20201219_ZG-BL
5.既然一切正常,我们就可以调用命令来下载固件并将其安装在设备上:
echo -e "AT+UPURL=http://10.10.123.4:1111/update?version=33_48_20240418_OpenBeken&beta,pierogi" | nc -u 10.10.123.3 48899
返回ok,大约一分钟后,您可以重置设备,然后它将出现在wifi网络OpenBL602_XXXXXXXX中,您可以根据自己的安装正常调整它。要注意,运行上述命令时,它会返回:
+ok=
然后烧写成功后会返回:
+ok=up_success
作为一个副项目,我制作了这个程序的Android版本,名为mhflasher,源代码可以在这里找到:https://github.com/kruzer/mhflasher。可以从releases文件夹下载Apk。
(原文刊登于EDN姊妹网站elektroda,参考链接:[BL602] How to flash Magic Home over WiFi without soldering,由Ricardo Xie编译。)