Speedometer
Controls
These are every control the scooter's Bluetooth actually accepts: headlight, the three ride modes, cruise control and kick-to-start. The three ride modes are the speed cap — the scooter's firmware has no acceleration, brake-strength, custom speed-cap or wheel-lock command (the official app can't set those either), so no app can change them. Test with the wheel off the ground first, and keep the ride mode within what's legal where you ride.
Live telemetry
Latest packet from the scooter. Bytes flash when they change — spin the wheel and the byte that follows the speed is your speed byte. Tap a byte, then assign it.
Protocol setup
Bluetooth channel
The app already asks for the usual serial-over-BLE services (FFE0, FFF0, Nordic UART and more). If no channels show up after connecting, find the scooter's service UUID with the free nRF Connect phone app, add it here and reconnect.
Speed & battery decoding
Command templates
These are the real Swagger 5 commands, taken from the official app. {zbits} is the scooter's checksum (the count
of 0-bits in the bytes after FE). Other tokens: {v}, {v16le}, {v16be}, {sum}, {xor}, {nsum16}. You normally won't need to change these.
About this scooter's protocol
The commands above were read out of the official app (com.jyd.swagger5). On connect the scooter sends a
login challenge (02 FE 04 …) and this app answers it automatically — until that happens, the scooter ignores commands.
Speed is 0.1 km/h in the FE 01 packet; battery % is byte 4 of the FE 02 packet. The scooter exposes only the
controls shown here — there is no acceleration, brake-strength or custom speed-cap command in its firmware, so the three ride modes are the only speed cap.