The onboard Intel AX210 on telep-mainframe saw zero BLE devices on every LE scan — not even stray phones — and lescan returned an I/O error. Root cause: there is NO ANTENNA plugged into the AX210 M.2 card. The AX210’s Bluetooth shares the card’s antenna (u.FL connector); with no antenna there is no RF path, so the controller powers on and reports UP RUNNING (chip init needs no antenna) but can receive nothing. This blocked the 7 print appliance (which needs BLE to reach a Marklife P15). Fix: plug the antenna into the AX210’s u.FL connector (it carries both WiFi + BT). A USB BLE dongle is only a fallback if no antenna is available.

Root cause = missing antenna, NOT a defective adapter

The AX210 is not broken. It has no antenna connected, so its RF receive path is dead. The real tell was “zero BLE devices seen, not even stray phones” — a classic RF/antenna symptom, not a firmware bug. Firmware/kernel/reboot fixes could never have helped a physical problem.

For Agents

Host: telep-mainframe, Debian 13 (trixie). Adapter: Intel AX210 = hci0, USB 8087:0032 at usb path 1-14, BD 7C:50:79:07:A9:53. Symptom: hcitool -i hci0 lescanSet scan parameters failed: Input/output error. bluetoothctl / btmgmt find -l LE scans return zero devices (not even stray phones). Classic BR/EDR init looks fine (hciconfig hci0 = UP RUNNING; btmgmt info current settings include le) because chip init needs no antenna. Root cause: NO ANTENNA on the AX210 M.2 card — WiFi + BT share the card’s u.FL antenna; no antenna = no RF receive. Fix: plug the antenna into the AX210 u.FL connector. Fallback only if no antenna available: a USB BLE dongle (comes up as hci1). Lesson: when a scan sees ZERO devices including strays, check physical RF (antenna) FIRST, before firmware/kernel/reboot.

Goal (context)

Self-host tomLadder/thermoprint on the mainframe to drive a Marklife P15 BLE label printer 24/7 from the tailnet. See design 2026-07-31-thermoprint-appliance-spec and implementation plan.

Software side is FULLY provisioned and staged at /home/levander/thermoprint:

  • Bun 1.3.14 at ~/.bun/bin/bun
  • thermoprint repo cloned
  • bun install clean — 672 packages, incl. sharp + @stoprocent/noble
  • setcap cap_net_raw,cap_net_admin+eip granted on the bun binary (Noble raw HCI)
  • Approach A (Bun print-service reusing thermoprint core + Noble, serving the patched web editor, tailscale serve + landing page) — spec and plan written

Everything is ready except a working BLE RF path (the missing antenna).

Symptoms

  • hcitool -i hci0 lescanSet scan parameters failed: Input/output error
  • bluetoothctl scan (LE) and btmgmt find -lzero devices discovered — not even nearby phones (the decisive clue: a working radio in a populated area always sees some stray BLE advertisers)
  • Classic Bluetooth init looks healthy: hciconfig hci0 shows UP RUNNING; btmgmt info current settings include le; the controller powers on normally — because chip initialization does not need an antenna, only RF send/receive does

Root cause

No antenna is plugged into the AX210 M.2 card. On the AX210, WiFi and Bluetooth share the card’s antenna via a u.FL connector. With nothing connected there is no RF path: the controller can power on and report UP RUNNING (init needs no antenna), but it can transmit/receive nothing — so an LE scan discovers zero devices and the scan-parameter path effectively fails with an I/O error. This is a physical fault, not firmware or silicon.

What was tried — ineffective (the cause was physical)

These OS-side attempts were an unnecessary detour: none of them could fix a missing-antenna problem, and none did.

#AttemptDetailResult
1Controller power-cyclebtmgmt power off/on + hciconfig hci0 resetineffective (physical cause)
2Full driver reloadmodprobe -r btusb; modprobe btusb (re-flashes BT firmware)ineffective
3USB re-enumerationunbind/rebind usb device 1-14 via /sys/bus/usb/drivers/usbineffective
4Firmware currency checkfirmware-iwlwifi already latest (20250410-2); BT firmware intel/ibt-0041-0041.sfi ts 2024.48 build 81864 — nothing newerineffective
5Kernel update6.12.956.12.100 (linux-image-amd64)ineffective
6Full rebootcold controller reinitineffective

Lesson — check physical RF before software

When a BLE scan sees zero devices including stray advertisers, suspect the antenna / RF path first, before spending time on firmware currency, kernel updates, or reboots. Those are the wrong layer for an “everything looks up but nothing is heard” symptom.

Fix / next step

  1. Plug the antenna into the AX210’s u.FL connector (the M.2 card’s antenna pigtail — carries both WiFi and BT). This restores the RF path for BLE scanning.
  2. Fallback only (if no antenna is available): plug a cheap USB Bluetooth dongle (~$5–10, e.g. CSR8510 or any BLE-capable adapter) — it comes up as hci1 and does BLE independently of the AX210.
  3. Ensure the P15 is powered ON, woken (press its button so it advertises), and within ~10 m BLE range of the mainframe.
  4. Re-run discovery (Task 1 gate of the plan):
    cd /home/levander/thermoprint && ~/.bun/bin/bun run packages/cli/src/index.ts discover
    Expected: a printer whose name starts with P15/LP15/etc.
  5. Continue the plan: build the print-service (Task 2) → patch + build the editor (Task 3) → systemd + tailscale serve + landing page (Task 4) → end-to-end verify (Task 5).