CaiXianlin Shock Collar Remote for Flipper Zero

January 12, 2026 · View on GitHub

A Flipper Zero application to control CaiXianlin shock collar.

Screenshot

WARNING: This application is intended for educational and research purposes only.

NOTE: I don't endorse use of these devices on any animals. You do you, but I'd never use this device on an animal.

Features

  • Send shock, vibrate, or beep commands
  • Adjustable strength (0–100)
  • Channels (0–2)
  • Clone/Listen mode – Capture Station ID and channel from an existing remote controller / hub
  • Persistent settings – Station ID and channel are saved

Controls

Main Screen:

ButtonAction
OK (hold)Transmit signal
/ Change mode (Shock/Vibrate/Beep)
/ Adjust strength (0–100)
Back (short)Exit app
Back (hold)Open setup screen

Setup Screen:

ButtonAction
/ Navigate menu
/ Change channel (when selected)
OKSelect option
BackReturn to main screen

Protocol Specification

RF Parameters:

ParameterValue
Frequency433.92 MHz
ModulationASK/OOK
PresetFuriHalSubGhzPresetOok270Async

Bit Encoding:

ElementHIGH DurationLOW DurationRatio
Sync~1250 µs (5 TE)~750 µs (3 TE)5:3
Bit 1~750 µs (3 TE)~250 µs (1 TE)3:1
Bit 0~250 µs (1 TE)~750 µs (3 TE)1:3

Where TE (Time Element) ≈ 250 µs

Based on https://wiki.openshock.org/hardware/shockers/caixianlin and captured signals from the controller hub. The app is using integer ratios matching the behavior of a real controller, rather than strictly following the protocol as specified in the wiki.

Packet Structure (42 bits):

[SYNC] [STATION_ID:16] [CHANNEL:4] [MODE:4] [STRENGTH:8] [CHECKSUM:8] [END:2]
FieldBitsRangeDescription
Station ID160-65535Transmitter identifier (collar paired to this)
Channel40-2Channel number
Mode41-31=Shock, 2=Vibrate, 3=Beep
Strength80-100Intensity (should be 0 for Beep)
Checksum80-2558-bit sum of all preceding bytes
End200Always 00

Checksum Calculation:

checksum = (STATION_ID_high_byte + STATION_ID_low_byte + Channel + Mode + Strength) & 0xFF

First Launch

On the first launch, the setup screen will appear. You can:

  1. Manually enter the Station ID (if you know it)
  2. Set the channel (0-2)
  3. Use Listen for Remote to clone an existing remote
  4. Press Done to start using the app

Settings are automatically saved and will be restored on the next launch.

License

MIT License – see LICENSE file for details.

Acknowledgments