KyberWrite

June 3, 2026 · View on GitHub

Program EM4x05 RFID tubes to act as Disney Galaxy's Edge kyber crystals, using a Flipper Zero running Unleashed firmware.

Converted from the original Proxmark3 Lua script by Spandox.


Requirements

RequirementNotes
Flipper ZeroAny hardware revision
Unleashed firmware≥ 0.9x (needs lfrfid_raw_write_em4x05_word)
EM4x05 tube blankFDX-B animal chips work; the script re-formats them
fbt build toolchainFrom the Unleashed repo

The stock Flipper firmware does not expose EM4x05 block-write capability. You must be on Unleashed (or RogueMaster, which forks Unleashed).


Building

(You can just take the fap I compiled in the root and use directly by placing in the /ext/apps/RFID/kyberwrite.fap or compile it yourself)

# Clone Unleashed firmware
git clone https://github.com/DarkFlippers/unleashed-firmware
cd unleashed-firmware

# Drop this folder into applications_user/
cp -r /path/to/kyberwrite applications_user/kyberwrite

# Build 
./fbt fap_kyberwrite

# build will be located at
unleashed-firmware/build/f7-firmware-D/.extapps/kyberwrite.fap

# DEPLOY (install)
I use [Flipper Lab](https://lab.flipper.net/archive)
Copy the compiled `.fap` (or the one I compiled at the root) to your Flipper at
/ext/apps/RFID/kyberwrite.fap

Usage

Full Init — use on a fresh/blank EM4x05 chip (e.g. an FDX-B animal chip). Writes all 13 data blocks in the correct order (skipping the password block, writing block 1 last — same logic as the original Proxmark script).

Quick Change — use on a chip already formatted as a kyber crystal. Writes only address 6 (the color/voice selector). Much faster.

Flow

Main Menu
  ├─ Full Init     ─┐
  └─ Quick Change  ─┴─▶  Color Picker (19 crystals)


                        Writing (progress)

                         ┌─────┴──────┐
                       Pass          Fail
                      popup         popup
                         └─────┬──────┘

                          Main Menu

Physical placement

Hold the EM4x05 tube flat against the back of the Flipper, centered over the RFID coil (the coil is the teardrop-shaped antenna trace near the top). Keep it still during the write sequence — moving it mid-write will cause a block-write failure.


Crystal reference

CodeColorSith VoiceJedi VoiceJedi (in Sith mode)
18003000WhitePalpatineAhsoka TanoOld Luke
5E003000RedDarth VaderYodaQui-Gon, Yoda
3D003000Orange
7B003000YellowPalpatineTemple GuardOld Luke
0C803000GreenPalpatineQui-Gon JinnOld Luke, Mace
4A803000Cyan
29803000BluePalpatineOld Obi-WanOld Luke
6F803000PurplePalpatineMace Windu 1Old Luke
14403000WhitePalpatineChirrut ImweOld Luke
52403000RedPalpatineYodaYoung Obi-Wan
31403000RedCount DookuYodaYoda, Old Obi-Wan
77403000YellowPalpatineMaz KanataOld Luke
00C03000GreenPalpatineYodaOld Luke
46C03000RedDarth MaulYodaBendu, sound fx
25C03000BluePalpatineOld LukeOld Luke
63C03000PurplePalpatineMace Windu 2Old Luke, Mace
3E183000RedVader 8-BallYodaMace Windu
5D183000GreenPalpatineYoda 8-BallOld Luke
1B183000BlackSnokeYodaOld Obi-Wan

Data sourced from the community spreadsheet originally linked in the Proxmark script.


Notes & caveats

  • Password block (addr 2) is intentionally skipped. The Proxmark script skips it too. If you need to change the password you'll need to extend the write order and add the password word.
  • Block 1 is written last, matching the original script — writing it early causes failures on some chips.
  • The 300 ms inter-block delay mirrors the sleep(1) in the Lua original but is shorter. If you get write failures try increasing WRITE_DELAY_MS in kyberwrite_scene_writing.c.
  • Orange (3D003000) and Cyan (4A803000) are listed as having no associated voice lines in the community data.

License

Do what you want with it. Based on public community research into Galaxy's Edge lightsaber electronics. No affiliation with Disney.