# 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_. ## GPS/GNSS Receivers Infix supports GPS/GNSS receivers for hardware status monitoring and NTP time synchronization. USB GPS receivers using the USB ACM interface are supported (e.g., u-blox). When connected, devices are automatically discovered and named `gps0`, `gps1`, etc. ### Current status
admin@example:/> show hardware
HARDWARE COMPONENTS
──────────────────────────────────────────────────────────────
GPS/GNSS Receivers
Name : gps0
Device : /dev/gps0
Driver : u-blox
Status : Active
Fix : 3D
Satellites : 10/15 (used/visible)
Position : 59.334567N 18.063456E 42.3m
PPS : Available
Available information per receiver:
| Field | Description |
|------------|---------------------------------------------------|
| Name | Component name (`gps0`, `gps1`, ...) |
| Device | Device path (`/dev/gps0`) |
| Driver | Protocol driver (e.g., `u-blox`, `NMEA`, `SiRF`) |
| Status | `Active` or `Inactive` |
| Fix | `NONE`, `2D`, or `3D` |
| Satellites | Used/visible count |
| Position | Latitude, longitude, altitude (when fix acquired) |
| PPS | Pulse Per Second signal availability |
### Configure GPS receiver
GPS receivers are hardware components with class `gps`. The class is
auto-inferred from the component name, similar to WiFi radios (`radioN`):
admin@example:/> configure
admin@example:/config/> set hardware component gps0
admin@example:/config/> leave
To use a GPS receiver as an NTP reference clock source, see
[NTP — GPS Reference Clock](ntp.md#gps-reference-clock).
## 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/admin@example:~$ sudo umount /media/log
[1]: https://www.rfc-editor.org/rfc/rfc8348.html