# Device Information API

# Device Information

curl http://192.168.25.25:8090/device/info
{
  "rosversion": "1.15.11",
  "rosdistro": "noetic",
  "axbot_version": "1.9.x", // The version of the main software package.
  "device": {
    "model": "hygeia", // The device model (e.g., hygeia, waiter, hotel, tray, longtray).
    "sn": "71822043000350z", // The Serial Number (SN), which is unique for every device.
    "name": "71822043000350z" // Some prototype devices may have a specific name.
    // For most production devices, this is identical to the SN.
  },
  "baseboard": {
    "firmware_version": "22a32218"
  },
  "wheel_control": {
    "firmware_version": "amps_20211103" // The firmware version of the wheel controller.
  },
  "bottom_sensor_pack": {
    "firmware_version": "1.1.1"
  },
  "depth_camera": {
    "firmware_version": "[/dev/camera:1.2.5-s2-ax-D1]"
  },
  "robot": {
    "footprint": [],
    "inscribed_radius": 0.248,
    "height": 1.2,
    "thickness": 0.546,
    "wheel_distance": 0.36,
    "width": 0.496,
    "charge_contact_position": "back" // The position of the charging contact ("back" or "front").
  },
  "caps": {
    "supportsImuRecalibrateService": true, // Supports the /services/imu/recalibrate service.
    "supportsShutdownService": true, // Supports the /services/baseboard/shutdown service.
    "supportsRestartService": true, // Supports the /services/restart_service service.
    "supportsResetOccupancyGridService": true, // Supports the /services/occupancy_grid_server/reset service.
    "supportsImuRecalibrationFeedback": true, // Supports the /imu_state WebSocket topic.
    "supportsSetControlModeService": true, // Supports the /services/wheel_control/set_control_mode service.
    "supportsSetEmergencyStopService": true, // Supports the /services/wheel_control/set_emergency_stop service.
    "supportsWheelStateTopic": true, // Supports the /wheel_state WebSocket topic.
    "supportsWsV2": true, // Supports the V2 WebSocket API (ws://HOST/ws/v2/topics).
    "supportsRgbCamera": true, // Supports RGB camera-related topics.
    "combineImuBiasAndPoseCalibration": true // Available since version 2.4.0. Combines IMU bias and pose calibration.
  }
}

# Brief Device Information

curl http://192.168.25.25:8090/device/info/brief # Retrieves a reduced set of device information.

# Wi-Fi List

curl http://192.168.25.25:8090/device/available_wifis
[
  {
    "ssid": "AutoXing",
    "bss": "a4:fa:76:33:d3:62",
    "rssi": -45,
    "open": false // Available since version 2.3.0.
  },
  {
    "ssid": "AutoXing-guest",
    "bss": "a4:fa:76:33:d3:72",
    "rssi": -33,
    "open": false // Available since version 2.3.0.
  }
]

# Network Information

curl http://192.168.25.25:8090/device/wifi_info

Response in Station mode:

{
  "wifi_mode": "station",
  "wpa_state": "completed",
  "route_mode": "eth0_first",
  "wifi_ip": "10.10.41.43",
  "wifi_mac": "e4:5f:01:6d:bd:6a",
  "ssid": "AutoXing",
  "debug_message":"info: Switching to station mode.",
  "routes":[
    "default via 192.168.25.2 dev eth0 src 192.168.25.25 metric 202 ",
    "default via 10.10.40.1 dev wlan0 proto dhcp metric 600 ",
    "10.10.40.0/23 dev wlan0 proto kernel scope link src 10.10.41.43 metric 600 ",
    "192.168.25.0/24 dev eth0 proto dhcp scope link src 192.168.25.25 metric 202 "
  ],
  "active_access_point":{
    "ssid":"AutoXing",
    "hw_address":"a4:fa:76:33:d3:70",
    "strength":100
  },
  "last_wifi_connect_result":{}
}

Response in AP mode:

{ "mode": "ap" }

# List USB Devices

USB devices are organized in a tree structure.

008/001 1d6b:0001 8 [fe3a0000.usb] USB 1.1 root hub
004/001 1d6b:0001 4 [fe3e0000.usb] USB 1.1 root hub
007/001 1d6b:0002 7 [fe380000.usb] USB 2.0 root hub
    007/002 1a40:0101 7-1 [] USB 2.0 hub
        007/033 0603:000a 7-1.3 [HK100QB2A26D1143] iHawk_100Q
        007/035 0603:000a 7-1.4 [HK100QB2A26D1346] iHawk_100Q
curl http://192.168.25.25:8090/device/usb_devices

This request lists all USB devices connected to the robot:

[
    {
        "vendor_product": "1d6b:0001",
        "sn": "fe3a0000.usb",
        "alias": "USB 1.1 root hub",
        "description": "Linux Foundation 1.1 root hub",
        "bind": "",
        "bus_id": 8,
        "dev_id": 1,
        "port": 1,
        "full_port": "8",
        "level": 0,
        "devices": [],
    },
    {
        "vendor_product": "1d6b:0002",
        "sn": "fe380000.usb",
        "alias": "USB 2.0 root hub",
        "description": "Linux Foundation 2.0 root hub",
        "bind": "",
        "bus_id": 7,
        "dev_id": 1,
        "port": 1,
        "full_port": "7",
        "level": 0,
        "devices": [
            {
                "vendor_product": "1a40:0101",
                "sn": "",
                "alias": "USB 2.0 hub",
                "description": "Terminus Technology Inc. Hub",
                "bind": "",
                "bus_id": 7,
                "dev_id": 2,
                "port": 1,
                "full_port": "7-1",
                "level": 4,
                "devices": [
                    {
                        "vendor_product": "0603:000a",
                        "sn": "HK100QB2A26D1143",
                        "alias": "iHawk_100Q",
                        "description": "Novatek Microelectronics Corp. ",
                        "bind": "",
                        "bus_id": 7,
                        "dev_id": 33,
                        "port": 3,
                        "full_port": "7-1.3",
                        "level": 8,
                        "devices": [],
                    },
                    {
                        "vendor_product": "0603:000a",
                        "sn": "HK100QB2A26D1346",
                        "alias": "iHawk_100Q",
                        "description": "Novatek Microelectronics Corp. ",
                        "bind": "",
                        "bus_id": 7,
                        "dev_id": 35,
                        "port": 4,
                        "full_port": "7-1.4",
                        "level": 8,
                        "devices": [],
                    },
                ],
            }
        ],
    },
]

# Saved USB Devices

Since USB devices may occasionally disconnect, this API allows you to back up the current USB device list. This backup can be used to identify any missing or disconnected devices later.

Save the current USB device list:

curl -X PUT \
  -H "Content-Type: application/json" \
  -d '[...]' \
  http://192.168.25.25:8090/device/usb_devices/saved

Retrieve the saved USB device list:

curl http://192.168.25.25:8090/device/usb_devices/saved

Clear the saved USB device list:

curl -X DELETE http://192.168.25.25:8090/device/usb_devices/saved

# Boot Progress

During the boot process, any API request will return a 503 Service Unavailable status code. Once the boot process is complete, the APIs will function normally.

However, GET /device/boot_progress will always return a 200 OK status, even after booting is finished.

For example:

curl http://192.168.25.25:8090/device/info # Returns 503 during the boot process.
curl http://192.168.25.25:8090/device/boot_progress # Always returns 200.
{
  "start_time": 1697777324.597,
  "progress": 0.21,
  "logs": [
    {
      "stamp": 1697777324.597,
      "progress": 0.0,
      "msg": "=== AutoXing Axbot Starting Up ==="
    },
    {
      "stamp": 1697777328.597,
      "progress": 0.2,
      "msg": "Loading remote params ..."
    },
    {
      "stamp": 1697777330.601,
      "progress": 0.21,
      "msg": "Starting lidar_node ..."
    }
  ]
}

# Time Configuration

Chrony (opens new window) is used to manage the robot's system time.

Starting from version 2.7.1, you can manage certain time configurations using the following APIs.

The current Chrony configuration can be retrieved from:

curl http://192.168.25.25:8090/device/chrony/chrony.conf

# Time Sources

Chrony can utilize a list of configured time sources.

$ curl http://192.168.25.25:8090/device/chrony/sources
[
  "pool 2.debian.pool.ntp.org iburst",
  "pool 1.cn.pool.ntp.org iburst",
  "pool 2.cn.pool.ntp.org iburst",
  "pool 3.cn.pool.ntp.org iburst",
  "pool 0.cn.pool.ntp.org iburst",
  "server ntp1.autoxing.com iburst",
  "server ntp2.autoxing.com iburst"
]

The syntax is a subset of the Chrony Time Source (opens new window) configuration.

  • server [HOSTNAME] [PORT port] [iburst] [trust]
  • pool [NAME] [PORT port] [iburst] [trust]

It is recommended to configure at least four time sources to mitigate the impact of an inaccurate source (a "falseticker"). See https://access.redhat.com/solutions/58025

Set the time sources:

curl -X PUT \
  -H "Content-Type: application/json" \
  --data '["pool 2.debian.pool.ntp.org iburst", "pool 0.cn.pool.ntp.org iburst"]' \
  http://192.168.25.25:8090/device/chrony/sources

Restore the default time sources:

curl -X DELETE http://192.168.25.25:8090/device/chrony/sources

# NTP Server

Chrony can also be configured to act as an NTP server.

To enable NTP access for the 192.168.2.* subnet, use the following API:

curl -X PUT \
  -H "Content-Type: application/json" \
  --data '["allow 192.168.2.0/24"]' \
  http://192.168.25.25:8090/device/chrony/allows

The syntax follows the Chrony Time Server (opens new window) configuration.

allow [all] [SUBNET]

Retrieve the current allow rules:

curl http://192.168.25.25:8090/device/chrony/allows

Disable the NTP Server:

curl -X DELETE http://192.168.25.25:8090/device/chrony/allows

# Sensor List

Available since version 2.12.0.

Returns a list of all sensors and their primary topics, intended for human inspection during the quality control process.

curl http://192.168.25.25:8090/device/sensors
{
    "depth_cameras": [
        {
            "name": "ihawk_upward",
            "depth_image_topic": "/depth_camera/downward/image"
        },
        {
            "name": "ihawk_downward",
            "depth_image_topic": "/depth_camera/backward/image"
        }
    ],
    "laser_scanners": [
        {
            "name": "lidar_node",
            "scan_topic": "/horizontal_laser_2d/matched"
        }
    ],
    "rgb_cameras": [
        {
            "name": "rgb_forward",
            "image_topic": "/rgb_cameras/front/compressed"
        }
    ]
}
Last Updated: 12/31/2025, 4:17:07 PM