Chameleon Ultra

Connect GhostESP to a Chameleon Ultra reader

On this page

GhostESP can control a Chameleon Ultra over BLE, then use the normal NFC scan/save flows. The Chameleon Ultra uses a different backend (BLE GATT protocol) than the PN532 (SPI/I2C), so some behavior differs. You need a GhostESP build with BLE and Chameleon Ultra features enabled, plus a powered Chameleon Ultra advertising over BLE.

Supported Devices

Chameleon Ultra support is enabled on most BLE-capable GhostESP builds (the feature is on unless explicitly disabled). Confirmed builds include:

  • CrowPanel: CrowPanel Advance 2.4 / 2.8 / 3.5 / 4.3 / 5 / 7; CrowPanel 4.2 E-paper and 5.79 E-paper
  • Waveshare / Crowtech / Sunton: 7″
  • Wired Hatters Banshee: Banshee C5, Banshee S3
  • M5Stack: M5 CoreS3-SE, AtomS3R
  • LilyGo: T-Dongle S3, T-Dongle C5, T-Deck, T-Embed C1101, S3TWatch-2020, T-Display S3 Touch
  • Seeed XIAO: XIAO S3, XIAO C5, XIAO S3 Sense
  • Others: Heltec V3, Poltergeist, NM-CYD-C5, JC3248W535EN, Feberis Pro, Sputnik_SCR, GhostLink P1
  • Generic builds: esp32-generic, esp32s3-generic, esp32c3-generic, esp32c5-generic-v01, esp32c6-generic
  • Marauder / dev boards / CYD: MarauderV4_FlipperHub, MarauderV6_AwokDual, ghostboard, Cardputer, CardputerADV, CYD2USB, CYDMicroUSB, CYDDualUSB, CYD2USB2.4Inch, CYD2USB2.4Inch_C, CYD2432S028R, JCMK_DevBoardPro, RabbitLabs_Minion, Lolin_S3_Pro

Connecting to Chameleon Ultra

Note: GhostESP suspends the access point and Wi-Fi services during BLE sessions (including Chameleon connections) to free memory. The radio comes back automatically after you disconnect or run stop.

On-Device UI

  1. Open Main Menu → NFC → Tools → Chameleon Ultra → Connect. The device scans for nearby Chameleon Ultra devices.
  2. Wait for the connection popup to show “Connected”. Battery voltage and percentage appear below the status.
  3. Use Disconnect from the same menu when finished. Wi-Fi services resume automatically after disconnecting.

CLI

  1. Run chameleon connect to start pairing. Optional arguments:
    • timeout in seconds (default 10) if you need more time for discovery.
    • pin if your Chameleon Ultra requires a 4-6 digit security code. Example: chameleon connect 15 1234 Argument parsing: a 1-2 character positive value is treated as a timeout; anything else is treated as a PIN.
  2. Wait for pairing confirmation in the terminal. The CLI announces when the link succeeds.
  3. Check status with chameleon status or battery with chameleon battery. Voltage and percentage display before starting long dumps.
  4. Run chameleon disconnect when finished. BLE releases and the Wi-Fi services will restore automatically.

Other Chameleon Subcommands

The chameleon command also supports:

  • firmware, devicemode, activeslot, setslot <1-8>, slotinfo <1-8>, battery
  • scanhidprox, mfdetect, mfprng, ntagdetect, ntagdump, saventag [file]
  • savelf [file], readhf, savedump [file], emulator

Troubleshooting

  • Connection timeouts: Keep the Chameleon Ultra awake (press any button) and re-run chameleon connect 20 for a longer window.
  • PIN failures: Verify the configured code on the Chameleon Ultra; three failed attempts may force a power cycle.
  • No BLE advertisements: Check the Chameleon Ultra’s BLE settings or reboot it; GhostESP only connects to active broadcasts.