{
  "hardware": {
    "waveshare": {
      "name": "Waveshare LoRa HAT",
      "bus_id": 0,
      "cs_id": 0,
      "cs_pin": 21,
      "reset_pin": 18,
      "busy_pin": 20,
      "irq_pin": 16,
      "txen_pin": 13,
      "rxen_pin": 12,
      "txled_pin": -1,
      "rxled_pin": -1,
      "tx_power": 22,
      "preamble_length": 17,
      "is_waveshare": true
    },
    "uconsole_aiov1": {
      "name": "uConsole LoRa Module aio v1",
      "bus_id": 1,
      "cs_id": 0,
      "cs_pin": -1,
      "reset_pin": 25,
      "busy_pin": 24,
      "irq_pin": 26,
      "txen_pin": -1,
      "rxen_pin": -1,
      "txled_pin": -1,
      "rxled_pin": -1,
      "tx_power": 22,
      "preamble_length": 17
    },
     "uconsole_aio_v2": {
      "name": "uConsole LoRa Module aio v2",
      "bus_id": 1,
      "cs_id": 0,
      "cs_pin": -1,
      "reset_pin": 25,
      "busy_pin": 24,
      "irq_pin": 26,
      "txen_pin": -1,
      "rxen_pin": -1,
      "txled_pin": -1,
      "rxled_pin": -1,
      "tx_power": 22,
      "preamble_length": 17,
      "use_dio3_tcxo": true,
      "use_dio2_rf": true
    },
    "pimesh-1w-v1": {
      "name": "PiMesh-1W (V1)",
      "bus_id": 0,
      "cs_id": 0,
      "cs_pin": 21,
      "reset_pin": 18,
      "busy_pin": 20,
      "irq_pin": 16,
      "txen_pin": 13,
      "rxen_pin": 12,
      "txled_pin": -1,
      "rxled_pin": -1,
      "tx_power": 22,
      "use_dio3_tcxo": true,
      "preamble_length": 17
    },
    "pimesh-1w-v2": {
      "name": "PiMesh-1W (V2)",
      "bus_id": 0,
      "cs_id": 0,
      "cs_pin": -1,
      "reset_pin": 18,
      "busy_pin": 5,
      "irq_pin": 6,
      "txen_pin": -1,
      "rxen_pin": -1,
      "txled_pin": -1,
      "rxled_pin": -1,
      "en_pin": 26,
      "tx_power": 22,
      "use_dio3_tcxo": true,
      "use_dio2_rf": true,
      "preamble_length": 17
    },
    "meshadv-mini": {
      "name": "MeshAdv Mini",
      "bus_id": 0,
      "cs_id": 0,
      "cs_pin": 8,
      "reset_pin": 24,
      "busy_pin": 20,
      "irq_pin": 16,
      "txen_pin": -1,
      "rxen_pin": 12,
      "txled_pin": -1,
      "rxled_pin": -1,
      "tx_power": 22,
      "preamble_length": 17
    },
    "meshadv": {
      "name": "MeshAdv",
      "bus_id": 0,
      "cs_id": 0,
      "cs_pin": 21,
      "reset_pin": 18,
      "busy_pin": 20,
      "irq_pin": 16,
      "txen_pin": 13,
      "rxen_pin": 12,
      "txled_pin": -1,
      "rxled_pin": -1,
      "tx_power": 22,
      "use_dio3_tcxo": true,
      "preamble_length": 17
    },
    "zebra": {
      "name": "ZebraHat-1W",
      "bus_id": 0,
      "cs_id": 0,
      "cs_pin": 24,
      "reset_pin": 17,
      "busy_pin": 27,
      "irq_pin": 22,
      "txen_pin": -1,
      "rxen_pin": -1,
      "txled_pin": -1,
      "rxled_pin": -1,
      "tx_power": 18,
      "use_dio3_tcxo": true,
      "use_dio2_rf": true,
      "preamble_length": 17
    },
    "femtofox-1W-SX": {
      "name": "FemtoFox SX1262 (1W)",
      "bus_id": 0,
      "cs_id": 0,
      "cs_pin": 16,
      "gpio_chip": 1,
      "use_gpiod_backend": true,
      "reset_pin": 25,
      "busy_pin": 22,
      "irq_pin": 23,
      "txen_pin": -1,
      "rxen_pin": 24,
      "txled_pin": -1,
      "rxled_pin": -1,
      "tx_power": 30,
      "use_dio3_tcxo": true,
      "preamble_length": 17
    },
    "femtofox-2W-SX": {
      "name": "FemtoFox SX1262 (2W)",
      "bus_id": 0,
      "cs_id": 0,
      "cs_pin": 16,
      "gpio_chip": 1,
      "use_gpiod_backend": true,
      "reset_pin": 25,
      "busy_pin": 22,
      "irq_pin": 23,
      "txen_pin": -1,
      "rxen_pin": 24,
      "txled_pin": -1,
      "rxled_pin": -1,
      "tx_power": 8,
      "use_dio2_rf": true,
      "use_dio3_tcxo": true
    },
    "nebrahat": {
      "name": "NebraHat-2W",
      "bus_id": 0,
      "cs_id": 0,
      "cs_pin": 8,
      "reset_pin": 18,
      "busy_pin": 4,
      "irq_pin": 22,
      "txen_pin": -1,
      "rxen_pin": 25,
      "txled_pin": -1,
      "rxled_pin": -1,
      "tx_power": 8,
      "use_dio3_tcxo": true,
      "use_dio2_rf": true,
      "preamble_length": 17
    },
    "nebra-duo-hat": {
      "name": "NebraDuo-E22P-1W",
      "bus_id": 0,
      "cs_id": 0,
      "cs_pin": -1,
      "reset_pin": 22,
      "busy_pin": 23,
      "irq_pin": 24,
      "txen_pin": -1,
      "rxen_pin": 1,
      "txled_pin": -1,
      "rxled_pin": -1,
      "tx_power": 18,
      "use_dio3_tcxo": true,
      "use_dio2_rf": true,
      "preamble_length": 17
    },
    "ch341-usb-sx1262": {
      "name": "CH341 USB-SPI + SX1262 (example)",
      "description": "SX1262 via CH341 USB-to-SPI adapter. NOTE: pin numbers are CH341 GPIO 0-7, not BCM.",
      "connection_type": "usb",
      "radio_type": "sx1262_ch341",
      "vid": 6790,
      "pid": 21778,
      "bus_id": 0,
      "cs_id": 0,
      "cs_pin": 0,
      "reset_pin": 2,
      "busy_pin": 4,
      "irq_pin": 6,
      "txen_pin": -1,
      "rxen_pin": 1,
      "txled_pin": -1,
      "rxled_pin": -1,
      "tx_power": 22,
      "use_dio2_rf": true,
      "use_dio3_tcxo": true,
      "dio3_tcxo_voltage": 1.8,
      "preamble_length": 17,
      "is_waveshare": false
    },
    "ultrapeater-e22": {
      "name": "Zindello Industries UltraPeater E22",
      "bus_id": 0,
      "cs_id": 0,
      "cs_pin": 16,
      "reset_pin": 22,
      "busy_pin": 11,
      "irq_pin": 10,
      "txen_pin": 20,
      "rxen_pin": 21,
      "txled_pin": 8,
      "rxled_pin": 1,
      "tx_power": 22,
      "use_dio2_rf": false,
      "use_dio3_tcxo": true,
      "preamble_length": 17,
      "use_gpiod_backend": true,
      "gpio_chip": 1
    },
    "ultrapeater-e22p": {
      "name": "Zindello Industries UltraPeater E22P",
      "bus_id": 0,
      "cs_id": 0,
      "cs_pin": 16,
      "reset_pin": 22,
      "busy_pin": 11,
      "irq_pin": 10,
      "txen_pin": 20,
      "rxen_pin": -1,
      "en_pin": 21,
      "txled_pin": 8,
      "rxled_pin": 1,
      "tx_power": 22,
      "use_dio2_rf": false,
      "use_dio3_tcxo": true,
      "preamble_length": 17,
      "use_gpiod_backend": true,
      "gpio_chip": 1
    },
    "rak6421-13300x-slot1": {
      "name": "Rak Wireless RAK6421 with RAK1330x on IO Slot 1",
      "bus_id": 0,
      "cs_id": 0,
      "cs_pin": -1,
      "reset_pin": 16,
      "busy_pin": 24,
      "irq_pin": 22,
      "txen_pin": -1,
      "rxen_pin": -1,
      "en_pins": [12, 13],
      "txled_pin": -1,
      "rxled_pin": -1,
      "tx_power": 22,
      "use_dio2_rf": true,
      "use_dio3_tcxo": true,
      "dio3_tcxo_voltage": 1.8,
      "preamble_length": 17,
      "use_gpiod_backend": true,
      "gpio_chip": 1
    },
    "rak6421-13300x-slot2": {
      "name": "Rak Wireless RAK6421 with RAK1330x on IO Slot 2",
      "bus_id": 0,
      "cs_id": 1,
      "cs_pin": -1,
      "reset_pin": 24,
      "busy_pin": 19,
      "irq_pin": 18,
      "txen_pin": -1,
      "rxen_pin": -1,
      "en_pins": [26, 23],
      "txled_pin": -1,
      "rxled_pin": -1,
      "tx_power": 22,
      "use_dio2_rf": true,
      "use_dio3_tcxo": true,
      "dio3_tcxo_voltage": 1.8,
      "preamble_length": 17,
      "use_gpiod_backend": true,
      "gpio_chip": 1
    },
      "ultrapeaterzero-e22": {
      "name": "Zindello Industries UltraPeaterZero E22",
      "bus_id": 0,
      "cs_id": 0,
      "cs_pin": 24,
      "reset_pin": 25,
      "busy_pin": 5,
      "irq_pin": 12,
      "txen_pin": 27,
      "rxen_pin": 17,
      "en_pins": [16],
      "txled_pin": 21,
      "rxled_pin": 20,
      "tx_power": 22,
      "use_dio2_rf": false,
      "use_dio3_tcxo": true,
      "preamble_length": 17
    },
      "ultrapeaterzero-e22p": {
      "name": "Zindello Industries UltraPeaterZero E22P",
      "bus_id": 0,
      "cs_id": 0,
      "cs_pin": 24,
      "reset_pin": 25,
      "busy_pin": 5,
      "irq_pin": 12,
      "txen_pin": 27,
      "rxen_pin": -1,
      "en_pins": [17, 16],
      "txled_pin": 21,
      "rxled_pin": 20,
      "tx_power": 22,
      "use_dio2_rf": false,
      "use_dio3_tcxo": true,
      "preamble_length": 17
    },
    "pymc_usb": {
      "name": "pymc_usb modem (USB-CDC)",
      "description": "ESP32-S3 / nRF52 board running pymc_usb firmware as a USB-CDC LoRa modem. Pick this if the modem is plugged into the host's USB port (e.g. /dev/ttyACM0). Edit the 'pymc_usb' section after first-run to point at the right serial device.",
      "connection_type": "usb",
      "radio_type": "pymc_usb",
      "tx_power": 22,
      "preamble_length": 16
    },
    "pymc_tcp": {
      "name": "pymc_tcp modem (Wi-Fi / Ethernet)",
      "description": "ESP32 board running pymc_usb firmware exposed as a TCP server over Wi-Fi or Ethernet. After first-run, set 'pymc_tcp.host' to the modem's LAN address or mDNS name (e.g. pymc-3e2834.local).",
      "connection_type": "network",
      "radio_type": "pymc_tcp",
      "tx_power": 22,
      "preamble_length": 16
    },
    "kiss": {
      "name": "KISS modem (serial)",
      "description": "MeshCore KISS modem over serial - requires pyMC_core with KISS support.",
      "connection_type": "usb",
      "radio_type": "kiss",
      "tx_power": 14,
      "preamble_length": 17
    }
  }
}