# Hardware Information and Status The hardware infomation and status is handled by the YANG model [IETF hardware][1], with deviations and augmentations in _infix-hardware_. ## USB Ports For Infix to be able to control USB port(s), a device tree modification is needed (see _alder.dtsi_ for full example). ```json chosen { infix { usb-ports = <&cp0_usb3_1>; usb-port-names = "USB"; }; }; ``` Two USB ports are also exposed in QEMU for test purpose. All USB ports in the system will be disabled during boot due to the file `board/common/rootfs/etc/modprobe.d/usbcore.conf`. If you do not want Infix to control USB port(s), remove the file or manually enable the USB bus, here is an example: ```bash # Enable the bus echo 1 > /sys/bus/usb/devices/usb1/authorized ``` And then enable sub-devices (e.g. USB memory) ```bash # Enable a device plugged into usb1 echo 1 > /sys/bus/usb/devices/usb1/1-1/authorized ``` ### Current status
admin@example:/> show hardware
HARDWARE COMPONENTS                                           
──────────────────────────────────────────────────────────────
Board Information                                            
Model               : FriendlyElec NanoPi R2S
Manufacturer        : FriendlyElec
Serial Number       : 9d1fbfdab6d171ce
Base MAC Address    : 4a:dc:d8:20:0d:85
──────────────────────────────────────────────────────────────
USB Ports                                                    
NAME                                         STATE     OPER   
USB                                          unlocked  enabled
──────────────────────────────────────────────────────────────
Sensors                                                      
NAME                          VALUE                 STATUS    
soc                           44.1 °C               ok        
soc                           44.5 °C               ok        
An USB port can be in two states _unlocked_ and _locked_. When a port is locked, all connected devices will get power, but never authorized by Linux to use. ### Configure USB port > [!NOTE] > You can only configure USB ports known to the system. See the CLI > command `show hardware` in admin-exec context. (Use `do` prefix in > configure context.)
admin@example:/> configure
admin@example:/config/> set hardware component USB state admin-state unlocked
admin@example:/config/> leave
admin@example:/>
### Using a USB Stick With the USB port unlocked, a memory stick can be used to expand the storage of the device. Plug it in, either directly, or via a USB hub. All partitions of *VFAT* or *exFAT* type are automatically mounted to the `/media/` directory, e.g., `/media/memorystick`, or if a partition does not have a label, using the kernel device name, e.g., `/media/sda`. Depending on the partition type the the media is either mounted in `flush` or `sync` mode to ensure files are properly flushed to the backing store of the memory stick. This to protect against users yanking out a device before file(s) have been written to it. The only way currently to safely "eject" a USB memory stick is to use `umount` command from a UNIX shell, which explicitly synchronizes any cached data to disk before returning the prompt:
admin@example:~$ sudo umount /media/log
[1]: https://www.rfc-editor.org/rfc/rfc8348.html