Hardware Verification
This page outlines the internal testing process for the hardware and software tools we use before each ATDM shipment and deployment.
ATDM - Internal Hardware Verification Procedure
1. Prerequisites & Initial Login
Power On: Connect the appropriate power supply to the ATDM unit and power it on.
Connect Ethernet: Ensure the ATDM is connected via Ethernet to a network accessible by your host computer.
Access Console/SSH: Access the device's command line. This can typically be done via:
Serial Console: (Details if applicable, e.g., Baud rate, port)
SSH: Once the device boots and gets an IP address (check DHCP server or use device discovery), connect via SSH from your host computer:
ssh torizon@<ATDM_IP_ADDRESS>
Login: Use the standard internal testing credentials:
Username:
torizon
Password:
Andromeda
Expected Outcome: You should see a login prompt similar to this after entering the password:
Last login: Fri Mar 28 00:49:53 2025 torizon@verdin-imx8mp-15230135:~$
(Verification: Successful login)
2. Hardware Component Tests
Execute the following commands for each component and verify the expected outcome.
2.1 Ethernet Connectivity
Command:
ifconfig eth0 # Or alternatively: ip addr show eth0
Expected Outcome: The command should display details for the
eth0
(or similarly named Ethernet) interface. Look for:UP
,RUNNING
flags.An
inet
address (IP address assigned via DHCP or static config).RX/TX packet counts (should ideally increase if network activity occurs).
Example Snippet:
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.68.110 netmask 255.255.252.0 broadcast 192.168.71.255 ether 00:14:2d:e8:64:b7 txqueuelen 1000 (Ethernet) RX packets 120 bytes 9297 (9.0 KiB) TX packets 40 bytes 5282 (5.1 KiB)
(Verification: Interface is UP, RUNNING, and has an IP address).
2.2 CAN Bus Interface
Commands:
# Configure CAN0 interface speed (e.g., 500kbit/s) ip link set can0 type can bitrate 500000 # Bring the CAN0 interface up ip link set can0 up # Monitor CAN traffic (Requires external CAN tool/device sending messages for full test) candump any -t z -Ddex
Expected Outcome:
The
ip link set
commands execute without error.candump any
starts listening without error. If CAN messages are being sent on the bus connected tocan0
, they should be displayed on the console.(Minimal Verification: Commands execute,
candump
starts listening).(Full Verification:
candump
displays expected CAN traffic).TODO: Integrate pythonCanoe project to verify CANbus traffic on the fly.
2.3 Cellular Modem
Command:
mmcli -m 0
Expected Outcome: The command should output detailed status information about the cellular modem (Quectel module). Key fields to check:
Hardware | manufacturer: QUALCOMM INCORPORATED
Hardware | model: QUECTEL Mobile Broadband Module
Status | state: registered
(Indicates connection to the cellular network - may require active SIM)Status | signal quality: XX%
(A percentage value should be present)3GPP | operator name: <Network Name>
(e.g., T-Mobile, AT&T - requires active SIM)SIM | primary sim path: /org/freedesktop/ModemManager1/SIM/0
(Indicates SIM is detected)Example Snippet (Focus on key status lines):
----------------------------------- Hardware | model: QUECTEL Mobile Broadband Module ----------------------------------- Status | state: registered | signal quality: 88% (cached) ----------------------------------- 3GPP | operator name: T-Mobile ----------------------------------- SIM | primary sim path: /org/freedesktop/ModemManager1/SIM/0
(Verification: Modem detected, reports status, ideally shows registered state and signal quality).
2.4 GPS Functionality
Commands:
# Ensure GPS NMEA stream is enabled mmcli -m 0 --location-enable-gps-nmea # Optional: Set refresh rate (e.g., 1 second) mmcli -m 0 --location-set-gps-refresh-rate=1 # Get current location data mmcli -m 0 --location-get
Expected Outcome:
The enable/set commands execute without error.
The
location-get
command outputs location information. Look for:GPS | nmea:
lines containing standard NMEA sentences (like $GPGSV, $GPGSA, $GPRMC, $GPGGA). Even without a satellite fix, these lines should appear. A fix requires a clear view of the sky.
Example Snippet (Showing NMEA data presence):
-------------------------- GPS | nmea: $GPGSV,2,1,07,10,,,30,18,,,25,26,,,29,27,45,295,32,1*58 | $GPGSV,2,2,07,29,04,156,34,32,,,30,48,,,36,1*52 | $GPGSA,A,1,,,,,,,,,,,,,,,,*32 | $GPRMC,,V,,,,,,,,,,N,V*29 | $GPVTG,,T,,M,,N,,K,N*2C | $GPGGA,,,,,,0,,,,,,,,*66
(Verification: NMEA sentences are being output by the modem).
2.5 WiFi Interface
Commands:
# Check WiFi device status nmcli device wifi # List available WiFi networks nmcli device wifi list
Expected Outcome:
The commands execute without error.
nmcli device wifi
should show the state of thewlan0
(or similar) interface (e.g.,connected
,disconnected
).nmcli device wifi list
should show nearby WiFi SSIDs if WiFi is enabled and networks are in range.(Minimal Verification: Commands run, show
wlan0
interface status).(Full Verification: Nearby networks are listed).
2.6 Bluetooth Interface
Commands:
# Check Bluetooth adapter status hciconfig # Ensure the adapter is UP (may require sudo) sudo hciconfig hci0 up # Enter bluetooth command utility bluetoothctl # Inside bluetoothctl, start scanning scan on
Expected Outcome:
hciconfig
shows thehci0
interface, preferably withUP RUNNING
flags.sudo hciconfig hci0 up
executes without error (if needed).Entering
bluetoothctl
works.scan on
starts the scanning process, and nearby discoverable Bluetooth devices should be listed with their MAC addresses and names.Example
hciconfig
Output:hci0: Type: Primary Bus: UART BD Address: 10:68:38:50:44:0C ACL MTU: 1021:5 SCO MTU: 60:12 UP RUNNING RX bytes:1824 acl:0 sco:0 events:133 errors:0 TX bytes:1571 acl:0 sco:0 commands:129 errors:0
(Verification:
hci0
is UP RUNNING,scan on
discovers devices).(Type
exit
inbluetoothctl
to leave the utility).
2.7 Touchscreen Input
Commands:
# Identify input devices (look for touchscreen device name/path) cat /proc/bus/input/devices # Test the specific event device (replace /dev/input/eventX if needed) # You might need sudo depending on permissions sudo evtest /dev/input/event1
Expected Outcome:
The
cat
command lists input devices. Identify the one corresponding to the touchscreen.Running
evtest
on the correct device path (/dev/input/eventX
) should print event data to the console when you touch the screen. PressCtrl+C
to stopevtest
.(Verification: Touching the screen generates output lines fromevtest
).
Last updated