Development
Command-line interface
you can control flipper zero through the command line interface (cli) using your computer the cli is a text based interface that allows you to read and emulate signals, run programs, manage files, and more on your flipper zero by running commands in addition, the cli offers a number of features, such as viewing the flipper zero logs, communicating with other flipper zero users via sub 1 ghz radio, and much more! on this page, you’ll learn how to access the flipper zero cli, view available commands, view logs, and chat with other flipper zero owners via sub 1 ghz radio accessing the flipper zero cli there are three methods to access the flipper zero cli method 1 using flipper lab access the cli via the flipper lab website using google chrome, microsoft edge, or other chromium based browsers that support the web serial api by doing the following quit the qflipper application if running connect your flipper zero to your computer via a usb cable on your computer, run google chrome or another chromium based browser go to https //lab flipper net/ > cli method 2 using the web serial terminal access the cli via the web serial terminal using google chrome, microsoft edge, or other chromium based browsers that support the web serial api by doing the following quit the qflipper application if running connect your flipper zero to your computer via a usb cable on your computer, run google chrome or another chromium based browser go to the https //googlechromelabs github io/serial terminal/ set the baud rate to 230400 , then click connect select your flipper zero in the list, then click connect method 3 using a serial terminal different operating systems have different procedures for accessing the flipper zero cli via a serial terminal follow the instructions for your operating system below to access the flipper zero cli on macos via a serial terminal, you need to find the serial port your flipper zero is connected to by doing the following connect your flipper zero to your computer on your computer, open terminal and run the following command ls /dev/cu find the name of the connected flipper zero it should be /dev/cu usbmodemflip name , where name is the unique name of your device once you know the name of the connected flipper zero, you can access the cli either with the screen terminal multiplexer or the minicom communication program screen quit qflipper if running make sure that your flipper zero is connected to the computer in the terminal, run the following command screen /dev/cu usbmodemflip name don’t forget to replace name with the name of your device you found previously to quit the screen , press control+a , then k , then y minicom if you don’t have the minicom program on your computer, you can install it via homebrew https //brew\ sh/ if you haven’t already by running in the terminal the following command /bin/bash c "$(curl fssl https //raw\ githubusercontent com/homebrew/install/head/install sh)" after installation, run the following command to install minicom brew install minicom once the minicom program is installed on your computer, you can finally access the cli by doing the following quit qflipper if running make sure that your flipper zero is connected to the computer in the terminal, run the following command minicom d /dev/ cu usbmodemflip name don’t forget to replace name with the name of your device you found previously to quit minicom , press esc+z , then x , then return to access the flipper zero cli on linux via a serial terminal, you need to find the serial port your flipper zero is connected to by doing the following connect your flipper zero to your computer on your computer, open the terminal and run the following command ls /dev/serial/by id/ find the name of the port it should be /dev/serial/by id/usb flipper devices inc flipper \<name> flip \<name> if00 , where name is the unique name of your device once you know the name of the port, you can access the cli either with the screen command or the minicom communication program screen quit qflipper if running make sure that your flipper zero is connected to the computer in the terminal, run the following command screen /dev/serial/by id/usb flipper devices inc flipper \<name> flip \<name> if00 don’t forget to replace name with the name of your device you found previously to quit the screen , press ctrl+a , then k , then y minicom if you don’t have the minicom program on your computer, install it using your distribution package manager once the minicom program is installed on your computer, you can finally access the cli by doing the following quit qflipper if running make sure that your flipper zero is connected to the computer in the terminal, run the following command minicom d /dev/serial/by id/usb flipper devices inc flipper \<name> flip \<name> if00 don’t forget to replace name with the name of your device you found previously to quit minicom , press ctrl+a , then x , then return if the steps above didn’t work, you may attempt to find the port name using the /dev/tty command if your flipper zero is the only device connected to the serial port, it should appear as /dev/ttyacm0 however, if there are other serial devices connected, you can find the flipper zero serial port name next to the device’s name in the qflipper application after finding the name of the serial port, you can access the cli either with the screen command or the minicom communication program to access the flipper zero cli on windows via a serial terminal, do the following on your computer, https //www chiark greenend org uk/ sgtatham/putty/latest html quit qflipper if running connect your flipper zero to your computer via a usb cable go to device manager > ports (com & lpt) look at the com port number of your flipper zero connected if there are several com port numbers, disconnect and connect your flipper zero back to see the added port number run putty in the opened window, in the connection type , select serial in the serial line field, enter the com port number (for example, com3) in the speed field, enter 230400 click the open button to quit putty , close the application window available commands to view the list of available commands in the cli, run the ? or help command you can interact with the flipper zero cli through the following commands command description ! alias for the info device command ? alias for the help command bt radio core (ble) test app intended for factory tests it can be used to check the ble hci version https //docs flipper net/development/cli/#mmgka crypto crypto tool used for enclave key provisioning and data encryption/decryption https //docs flipper net/development/cli/#plfz date displays/sets the current date and time device info alias for the info device command (obsolete) factory reset resets your device to the factory settings data on the microsd card will be saved free displays heap memory allocator information it can be used for general application memory use profiling free blocks displays heap memory allocator free blocks and their respective size it can be used to estimate heap fragmentation gpio allows to directly control gpio pins set mode, read/write state https //docs flipper net/development/cli/#aqa4b help displays the list of available commands i2c i2c bus scan tool can be used to search for a device on the bus ikey reads, emulates, and writes ibutton keys https //docs flipper net/development/cli/#plqrz info displays detailed information about the device and power system https //docs flipper net/development/cli/#ezoyq input input subsystem command line tool displays input and allows to inject input events into https //docs flipper net/development/cli/#z95zz ir reads and sends infrared signals https //docs flipper net/development/cli/#fejwz js runs a javascript file and sends console output to the cli https //docs flipper net/development/cli#gjmyy led notification service test app allows to control leds and lcd backlight https //docs flipper net/development/cli/#xqqai loader application / script loader can enumerate compiled in apps, can open internal or external (fap) app https //docs flipper net/development/cli/#wvlxi log system log viewer allows to see device or app logs https //docs flipper net/development/cli/# yz2e nfc reads and emulates data of nfc cards /#nfc onewire 1 wire bus scan app it works on the same pins as ibutton, but only scans for 1 wire devices https //docs flipper net/development/cli/#mxwpv power turns off and reboots the device, as well as enables the power supply to gpio pins https //docs flipper net/development/cli/#oj449 rfid reads and emulates data from low frequency rfid cards https //docs flipper net/development/cli/#mieur start rpc session activates the remote procedure call (rpc) session switches the cli into protobuf mode normally, you don’t need to do that storage provides commands for interaction with the file system of the device https //docs flipper net/development/cli/#xgais subghz sub ghz test app mostly used for factory testing, but also contains various supplementary tools https //docs flipper net/development/cli/#wlvht sysctl system control configures various system settings https //docs flipper net/development/cli/#gx6kf top lists running threads and information about them in real time similar to the top command on linux press ctrl+c to quit update firmware updater command line tool updates and backs up the device , and restores the internal storage https //docs flipper net/development/cli/#nhtut uptime displays the time since the last reboot of the device vibro activates and deactivates the vibration motor https //docs flipper net/development/cli/#4ett4 echo sends received bytes as is used by cli perf for performance testing stops on session close or ctrl+c (0x03) neofetch displays system info, similar to neofetch on linux/ nix systems reload ext cmds reloads the list of available commands to reflect any changes made to external commands on the sd card (added, removed, or updated) exit exits the cli shell especially useful in secondary shells buzzer plays a sound using the piezo speaker learn more reading flipper zero logs via the cli you can read flipper zero logs via the cli by doing the following connect your flipper zero to your computer via a usb c cable https //docs flipper net/development/cli/#hfxty set the log level you need (the log info level is set by default) and start logging to do that, run one of the following commands log logs non critical information, including warn logs log error logs only critical errors and other important messages log warn logs non critical errors and warnings, including error logs log info logs non critical information, including warn logs log default the default system log level (equivalent to info logs ) log debug logs debug information, including info logs (will impact system performance) log trace logs system traces, including debug logs (will impact system performance) you can access this list in the cli by running the log ? command interact with your flipper zero to view the logs to stop the logging process, press ctrl+c chatting with other flipper zero users in the cli, you can chat with other flipper zero users via the sub 1 ghz radio to do that, all devices have to communicate at the same frequency to chat, all participants have to do the following connect your flipper zero to your computer via a usb c cable https //docs flipper net/development/cli/#hfxty run the command that specifies the frequency and antenna type subghz chat \<frequency in h z> \<device 0/1> where \<frequency in hz> must be in the 299999755 348000000, 386999938 464000000, 778999847 928000000 hz range some frequencies might be unavailable in your region https //docs flipper net/sub ghz/frequencies \<device 0/1> must specify if the internal antenna (0) or external antenna (1) is used for communication if connected for example subghz chat 868150000 0 enter your message and press return to quit the chat, press ctrl+c learning more about the cli commands bt command description bt hci info displays bluetooth host controller interface (hci) information crypto this command allows you to encrypt and decrypt plain text with the help of the cryptographic keys in the secure enclave and initialization vector command arguments description crypto encrypt \<key slot int> \<iv hex> encrypts plain text with aes256cbc and encodes to hexadecimal format using a key from the secure enclave and initialization vector crypto decrypt \<key slot int> \<iv hex> decrypts encoded with aes256cbc data hexadecimal text into plain text using the key from the secure enclave and initialization vector crypto has key \<key slot int> checks if the secure enclave has a key in the specific slot slots range from 1 to 100 crypto store key \<key slot int> \<key type str> \<key size int> \<key data hex> non reversible operation! adds a key to the secure enclave the added key can’t be removed where \<key slot int> secure enclave slot number that contains a cryptographic key by default, slots 1 through 11 have cryptographic keys used for encryption \<iv hex> a 16 byte initialization vector in hexadecimal format generated by the user \<key type str> master, simple, or encrypted \<key size int> 128 or 256 bits \<key data hex> the key data in hexadecimal format gpio command arguments description gpio mode \<pin name> <0/1> sets the entered gpio pin to input (0) or output (1) mode gpio set \<pin name> <0/1> sets the gpio pin’s value gpio read \<pin name> reads the gpio pin’s value where \<pin name> pa7, pa6, pa4, pb3, pb2, pc3, pc1, pc0 ikey command arguments description ikey read reads ibutton keys ikey emulate \<key type> \<key data> emulates the entered data ikey write dallas \<key data> writes 8 byte data in hexadecimal format to dallas ibutton keys where \<key type> \<key data> in hexadecimal with the following lengths dallas 8 bytes cyfral 2 bytes metakom 4 bytes info command description info device displays information about the device info power displays information about the power system info power debug displays detailed information about the power system input command arguments description input dump displays the pressed buttons input send \<key> \<type> emulates a press of a button where \<key> up, down, left, right, back, ok \<type> press, release, short, long to emulate a short press of a button, run the following commands in order input send \<key> press input send \<key> short input send \<key> release to emulate a long press of a button, run the following commands in order input send \<key> press input send \<key> long input send \<key> release otherwise, the input will be discarded ir command arguments description ir rx reads and decodes data from ir (infrared) remote controls ir rx raw reads data from ir remote controls in raw format ir tx \<protocol> \<address> \<command> sends the entered ir command ir tx raw f \<frequency> dc \<duty cycle> \<samples> sends raw ir data up to 512 samples of data ir decode \<input file> \<output file> decodes the file with raw data ir universal list \<remote name> displays the list of commands of the entered remote ir universal \<remote name> \<signal name> sends the command from the entered remote where \<protocol> nec, necext, nec42, nec42ext, samsung32, rc6, rc5, rc5x, sirc, sirc15, sirc20, kaseikyo, rca \<address> and \<command> must be in hexadecimal format \<frequency> 10000 56000 \<duty cycle> 0 100 \<remote name> tv, audio, ac, projector js command arguments description js \<path> runs the selected javascript file and sends console output to the cli led the led command allows you to set the color of the s tatus led by adjusting the brightness of each color component (red, green, and blue) using the values from 0 to 255 for example, to set the led to 100% red color, you need to enter three commands led r 255 , then led g 0 , and then led b 0 you can also use this command to set the brightness of the always on backlight for example, the led bl 128 command sets the backlight brightness to 50% command arguments description led r <0 255> sets the brightness of the red component led g <0 255> sets the brightness of the green component led b <0 255> sets the brightness of the blue component led bl <0 255> turns on the display’s backlight and sets its brightness loader command arguments description loader list lists available applications loader open \<application name string> runs the entered application loader info displays the loader’s state loader close closes the running application loader signal \<signal number> \<arg hex> sends a signal with an optional argument in hexadecimal log command description log starts logging with the current log level log error logs only critical errors and other important messages log warn logs non critical errors and warnings, including error logs log info logs non critical information, including warn logs log default the default system log level (equivalent to info logs ) log debug logs debug information, including info logs (will impact system performance) log trace logs system traces, including debug logs (will impact system performance) to stop logging, press ctrl+c nfc the nfc command opens a separate shell, and all commands are run within this shell to see all available commands, enter help or ? to see detailed explanations in the cli, enter \<command> h to exit the shell, enter exit dump command arguments description dump f \<path> dumps physical card data to a nfc file optional arguments k \<key> , p \<protocol> , t \<timeout> where \<path> path to file \<protocol> specifies the nfc protocol for scanning, overriding auto detection available arguments 14 3a iso 14443 3a 14 3b iso 14443 3b 14 4a iso 14443 4a 14 4b iso 14443 4b 15 iso 15693 3 felica felica ™ mfu mifare ultralight ® mfc mifare classic ® mfp mifare plus ® des mifare desfire ® slix icode® slix st25 st25tb \<key> authentication key in hexadecimal format \<timeout> polling timeout value in milliseconds raw command arguments description raw p \<protocol> d \<data> sends raw bytes using different protocols optional arguments that can be combined with the required arguments t \<timeout> , k , c , s where \<protocol> specifies the nfc protocol to use available arguments 14a or iso14a iso 14443 3a 14b or iso14b iso 14443 3b 15 iso 15693 3 felica felica \<data> raw bytes for sending, in hexadecimal format \<timeout> timeout in number of carrier frequency cycles until receiving a response k add to the command to keep the signal field on after the response c add to the command to calculate and append crc to the transmitted data before sending s add to the command to perform the initial activation/anti collision sequence before sending the raw data mfu command arguments description mfu info outputs basic information about a mifare ultralight tag mfu rdbl b \<block number> reads a specific block of data from a mifare ultralight tag mfu wrbl b \<block number> d \<data> writes data to a specific data block of a mifare ultralight tag where \<block number> a decimal number of the block to write or read \<data> a 4 byte hexadecimal string to write other command arguments description field enables the high frequency nfc field ctrl+c to abort the command execution emulate f \<path> emulates a nfc file content scanner identifies all communication protocols supported by a tag and lists their names optional argument t \<tree> ctrl+c to abort the command execution apdu d \<data> sends apdu data to iso14443 4a, iso 14443 4b, and iso15693 3 tags optional argument p \<protocol> where \<path> path to file \<tree> add to the command to display the protocol hierarchy for each detected protocol \<protocol> sets the protocol, otherwise autodetected available arguments 4a iso 14443 4a 4b iso 14443 4b 15 iso 15693 3 \<data> apdu payload as hexadecimal strings supports multiple payloads, which are sent sequentially apdu d \<data 1> \<data 2> onewire command description onewire search searches for 1 wire devices power command arguments description power off powers off the device power reboot reboots the device power reboot2dfu reboots the device to dfu mode power 5v <1/0> enables (1) or disables (0) 5 v power supply to gpio pin 1 power 3v3 <1/0> enables (1) or disables (0) 3 3 v power supply to gpio pin 9 available in debug mode rfid command arguments description rfid read reads rfid card’s data in ask and psk modes rfid write \<key type> \<key data> writes the entered data rfid emulate \<key type> \<key data> emulates the entered data rfid raw read \<ask/psk> \<filename> reads and saves card’s data in raw format in a file rfid raw emulate \<filename> emulates the saved raw data from a file useful for debugging protocols rfid raw analyze \<filename> outputs raw data from a file to the cli and tries to decode it useful for protocol development where \<key type> \<key data> in hexadecimal format with the following lengths em4100 5 bytes em4100/32 5 bytes em4100/16 5 bytes electra 8 bytes h10301 3 bytes idteck 8 bytes indala26 4 bytes ioproxxsf 4 bytes awid 9 bytes fdx a 5 bytes fdx b 11 bytes hidprox 6 bytes hidext 12 bytes pyramid 4 bytes viking 4 bytes jablotron 5 bytes paradox 6 bytes pac/stanley 4 bytes keri 4 bytes gallagher 8 bytes nexwatch 8 bytes radio key 6 bytes gproxii 12 bytes noralsy 12 bytes storage the path must start with /int or /ext command path arguments description storage info \</ext> gets general info about the file system storage format \</ext> formats the file system on the microsd card storage list \</ext/path to directory> lists files and directories storage tree \</ext/path to directory> lists all files and directories storage remove \</ext/path to directory> deletes the file or directory the directory must be empty storage read \</ext/path to file> reads text from the file and prints the file size and content to the cli storage read chunks \</ext/path to file> <1 512> reads data from file in blocks and prints the file size and content to the cli, < 1 512 > is how many bytes you want to read in one block storage write \</ext/path to file> \<text> reads text from the cli and adds it to a file stops by pressing ctrl+c storage write chunk \</ext/path to file> <1 512> reads data from the cli and adds it to the file, < 1 512 > is how many bytes you want to write the entered data is not visible in the cli the command execution stops once the set number of bytes is entered storage copy \</ext/path to source file> \</ext/path to destination file> copies the file to a new file storage rename \</ext/path to file> \</ext/path to directory> renames a file or directory moves the file to a new directory with a new name storage mkdir \</ext/path to directory> creates a new directory storage md5 \</ext/path to file> displays the md5 hash of the file storage stat \</ext/path to file> displays info about the file or directory storage timestamp \</ext/path to file> displays the last modification timestamp storage extract \</ext/path to archive> \</ext/path to directory> extracts a tar archive file to a directory subghz command arguments description subghz chat \<frequency in hz> \<device 0/1> enables chatting with other flipper zero users subghz tx <3 byte key hex> \<frequency in hz> \<te in us> \<repeat count> \<device 0/1> transmits a key subghz rx \<frequency in hz> \<device 0/1> enables receiving of a signal subghz rx raw \<frequency in hz> enables receiving of a signal in raw format subghz decode raw \</ext/path to raw file> decodes a file with raw data and displays the results subghz tx from file \<path to file> \<repeat count> \<device 0/1> transmits data from a file the following commands can only be used in debug mode command arguments description subghz tx carrier \<frequency in hz> transmits carrier frequency subghz rx carrier \<frequency in hz> receives carrier frequency subghz encrypt keeloq \<path decrypted file> \<path encrypted file> \<iv 16 bytes hex> encrypts keeloq manufacture keys subghz encrypt raw \<path decrypted file> \<path encrypted file> \<iv 16 bytes hex> encrypts raw data where \<frequency in hz> is one of the values in the 299999755 348000000, 386999938 464000000, 778999847 928000000 hz range some frequencies might be unavailable in your region https //docs flipper net/sub ghz/frequencies \<device 0/1> 0 is the built in sub 1 ghz antenna with the cc1101 transceiver, 1 is the external sub 1 ghz antenna with the cc1101 transceiver \<te in us> quantization interval in microseconds \<iv 16 bytes hex> a 16 byte initialization vector in hexadecimal format generated by the user sysctl command arguments description sysctl debug <0/1> enables (1) or disables (0) system debug sysctl heap track \<none/main> enables (main) or disables (none) heap allocation tracking mode update command arguments description update install \</ext/path to update fuf> verifies and installs an update package update backup \</ext/path to backup tar> creates an internal storage backup update restore \</ext/path to backup tar> restores from an internal storage backup vibro command arguments description vibro <1/0> activates (1) or deactivates (0) the vibration motor buzzer command arguments description buzzer freq \<frequency in hz> \<duration> plays a sound with the set frequency buzzer note \<note> \<duration> plays the set musical note where \<frequency in hz> frequency in hz \<note> a musical note the letter s represents a sharp (#); for example, c#3 is written as cs3 flats (♭) aren’t supported \<duration> duration in milliseconds ( ms ), seconds ( s ), minutes ( m ), or hours ( h ) for example buzzer note cs3 500ms mifare, mifare ultralight, mifare classic, desfire, and icode are registered trademarks of nxp b v felica is a trademark of sony corporation
🤔
Have a question?
Our knowledgeable support team and an awesome community will get you an answer in a flash. Please leave your questions in English.
To ask a question or participate in discussions, you'll need to authenticate first.