[smlight@SMHUB]~$ nmcli device status
DEVICE TYPE STATE CONNECTION
usb0 ethernet connected usb0
lo loopback connected (externally) lo
wlan0 wifi disconnected --
eth0 ethernet unavailable --
Did you check, whether only a network interface shows up via USB, or does it also present other interfaces via USB? Like a serial device, maybe an audio or v4l device?
8.1 USB Passthrough
https://smlight.tech/support/manuals/link/36#bkmrk-purpose%3A-enables-smh
Purpose: Enables SMHUB to act either as a USB host (powering connected peripherals) or as a USB device (connected to a PC or another host).
Logic:
Automatically decides whether to supply or draw power.
Prevents reverse powering through integrated FET switching.
Use Cases:
Attach Z-Wave or extra Zigbee dongles, printers, audio devices, storage etc.
Connect SMHUB to a PC for development/debugging.
Power downstream devices safely.
```
No hardware RTC
sudo date
hwclock: can't open '/dev/misc/rtc': No such file or directory
Mine arrived today. It has holes for screws, but in mine there were none. (Only) held together by some (stubborn) plastic clips. Definitely not as effortless to pull apart as the video would make it seem. (Probably that devs unit has already been opened several times, and his clips were not that rigid anymore).
A firmware update came out yesterday. It now has a dual-boot scheme, it would seem. Sudo to root is (still) available with the normal password of the smlight user. Flashing requires Windows (for now) to do it easily. I’m hoping to get command lines from them (will write an email), that will enable to write images via ttyGS0, or SSH.
The platform seems similar to the MilkyV DuoS, which somebody has already built Debian images for. Wifi and BT are Realtek. other interfaces are ethernet wired, and USB0 (NCM), and (maybe) bnep. Will check that again tomorrow.
I’ll start adding info to this thread tomorrow, when I’m back at the PC. AMA.
Both Antennas, that were in the box, screwed on normally. I only took the POE addon. There are 2 unused antenna connectors on the board, WLAN & BT. I don’t have Zwave devices, but I have BT devices, so I’ll try to add a external Antenna for bluetooth.
The firmware is very … alpha. But that was expected. The delivered firmware had entries for SDBoot in the env, but the newer one doesn’t afaict.
I'll try to run/port both Debian and Openwrt on it. If I run Openwrt on it, I’ll probably just ser2net the radio(uart)s to my main HomeAssistant machine, and create some little mqtt scripts to make the other devices “known” to HA.
I’ve had some headers soldered onto the 2x9 extension port that includes “DBG TX/RX”, and to the 2x3 holes. I’m hoping to be able to interrupt the boot-loader, and will attempt to fiddle with the boot-up settings so as to boot the vendor 5.10 kernel with Debian RiscV userspace/root-fs. Then I’ll attempt to patch up 6.17 with the remaining outstanding 2-4 patches for the DuoS, and boot that with the Debian RootFS.
Then I’ll probably wait until somebody does an initial OpenWrt 6.18 patch for any platform when it gets released, and try to do the same for the RiscV platform if somebody does not beat me to it.
U-Boot 2021.10 (Sep 09 2025 - 19:30:00 +0000) duos
DRAM: 510 MiB
gd->relocaddr=0x9fbae000. offset=0x1f9ae000
set_rtc_register_for_power
MMC: cv-emmc@4300000: 0, cv-sd@4310000: 1, wifi-sd@4320000: 2
Loading Environment from MMC... OK
In: serial
Out: serial
Err: serial
Net: eth_designware ethernet@4070000: Can't get reset: -524
eth0: ethernet@4070000
Hit any key to stop autoboot: 0
switch to partitions #0, OK
mmc0(part 0) is current device
3750651 bytes read in 170 ms (21 MiB/s)
## Executing script at 81800000
sha1+ Searching for boot slots...
Found valid slot A, 2 attempts remaining
Saving Environment to MMC... Writing to MMC(0)... OK
Booting Kernel...
## Loading kernel from FIT Image at 81800000 ...
Using 'config-milkv_duos' configuration
Trying 'kernel-1' kernel subimage
Description: cvitek kernel
Type: Kernel Image
Compression: lzma compressed
Data Start: 0x818000d8
Data Size: 3724661 Bytes = 3.6 MiB
Architecture: RISC-V
OS: Linux
Load Address: 0x80200000
Entry Point: 0x80200000
Hash algo: crc32
Hash value: 37174e8e
Verifying Hash Integrity ... crc32+ OK
## Loading fdt from FIT Image at 81800000 ...
Using 'config-milkv_duos' configuration
Trying 'fdt-milkv_duos' fdt subimage
Description: cvitek device tree - duos
Type: Flat Device Tree
Compression: uncompressed
Data Start: 0x81b8d748
Data Size: 21412 Bytes = 20.9 KiB
Architecture: RISC-V
Hash algo: sha256
Hash value: 181bf9c93dff69f0e9e845a1dc21f6e00e2c33f19615f5fb384ac24e76103843
Verifying Hash Integrity ... sha256+ OK
Booting using the fdt blob at 0x81b8d748
Uncompressing Kernel Image
Decompressing 9037824 bytes used 1382ms
Loading Device Tree to 000000009f21d000, end 000000009f2253a3 ... OK
Starting kernel ...
This line looks promising: Using 'config-milkv_duos' configuration, which would seem to indicate, that the HW is very similar to the DuoS from MilkV.
The device then boots up to a login prompt, where you can login with the same credentials as for SSH/Web.
Hit any key to stop autoboot: 0
uhah# help
? - alias for 'help'
base - print or set address offset
bdinfo - print Board Info structure
blkcache - block cache diagnostics and control
boot - boot default, i.e., run 'bootcmd'
bootd - boot default, i.e., run 'bootcmd'
bootefi - Boots an EFI payload from memory
bootelf - Boot from an ELF image in memory
booti - boot Linux kernel 'Image' format from memory
bootm - boot application image from memory
bootp - boot image via network using BOOTP/TFTP protocol
bootvx - Boot vxWorks from an ELF image
cmp - memory compare
cp - memory copy
cpu - display information about CPUs
cvi_update- cvi_update [eth, sd, usb]- check boot status and update if necessary
cvi_utask - bootloader control block command
dcache - enable or disable data cache
dhcp - boot image via network using DHCP/TFTP protocol
dm - Driver model low level access
echo - echo args to console
eeprom - EEPROM sub-system
efuser - Read efuse
efuser_dump- Read/Dump efuse
efusew - Write efuse
efusew_word- Write word to efuse
env - environment handling commands
erase - erase FLASH memory
exit - exit script
ext2load - load binary file from a Ext2 filesystem
ext2ls - list files in a directory (default /)
ext4load - load binary file from a Ext4 filesystem
ext4ls - list files in a directory (default /)
ext4size - determine a file's size
false - do nothing, unsuccessfully
fastboot - run as a fastboot usb or udp device
fatinfo - print information about filesystem
fatload - load binary file from a dos filesystem
fatls - list files in a directory (default /)
fatmkdir - create a directory
fatrm - delete a file
fatsize - determine a file's size
fatwrite - write file into a dos filesystem
fdt - flattened device tree utility commands
flinfo - print FLASH memory information
fstype - Look up a filesystem type
fstypes - List supported filesystem types
go - start application at address 'addr'
gpio - query and control gpio pins
gpt - GUID Partition Table
help - print command description/usage
i2c - I2C sub-system
icache - enable or disable instruction cache
iminfo - print header information for application image
ln - Create a symbolic link
load - load binary file from a filesystem
loadb - load binary file over serial line (kermit mode)
loadx - load binary file over serial line (xmodem mode)
loady - load binary file over serial line (ymodem mode)
loop - infinite loop on address range
ls - list files in a directory (default /)
md - memory display
mdio - MDIO utility commands
mii - MII utility commands
mm - memory modify (auto-incrementing address)
mmc - MMC sub system
mmcinfo - display MMC info
mw - memory write (fill)
net - NET sub-system
nfs - boot image via network using NFS protocol
nm - memory modify (constant address)
panic - Panic with optional message
part - disk partition related commands
ping - send ICMP ECHO_REQUEST to network host
printenv - print environment variables
protect - enable or disable FLASH write protection
pxe - commands to get and boot from pxe files
random - fill memory with random pattern
reset - Perform RESET of the CPU
run - run commands in an environment variable
save - save file to a filesystem
saveenv - save environment variables to persistent storage
sbi - display SBI information
setenv - set environment variables
setexpr - set environment variable as the result of eval expression
showvar - print local hushshell variables
size - determine a file's size
sleep - delay execution for some time
source - run script from memory
sysboot - command to get and boot from syslinux files
test - minimal test like /bin/sh
tftpboot - boot image via network using TFTP protocol
true - do nothing, successfully
version - print monitor, compiler and linker version
I have now tried that a few times, it connects and reconnects a few time, writes some small pieces until “offset 166912”, but then stops with an error about device not found.
I’ll hook up the UART again, and check, if the behavior has changed.
Once your update to 0.2.3 has finished, can you check, whether the kernel is still 5.10? And could you check, if the uboot printenv with the newer version is different from 0.2.1c which I posted above?
OK, so nothing significantly changed in between 0.2.1c and 0.2.3 w.r.t U-Boot and kernel.
I restored my Uboot fdt* variables, and now the device boot again. But I now have a wierd mix of features, like it says Version 0.2.1c in the bottom left, but I have the webconsole from version 0.2.2 available. I’ll now attempt to update to 0.2.3, and (10 minutes later) that seems to have worked.
So, it looks like -in retrospect- that the update from 0.2.1c to 0.2.2 was partly successful (I got the webconsole), but somehow messed up somewhere along the way, and emptied my U-Boot env, so U-Boot fell back to defaults. After having restored enough of the variables in the Uboot env to their normal values, It now allowed me to fully boot up again.