cc-tool(1)
π cc-tool(1) β USER COMMANDS, bestie edition
okay so you found the cc-tool manpage and you're like "what is this" β don't worry, I got you. This is the manual page for cc-tool, living in the USER COMMANDS section, and by the end of this you're gonna be flashing chips like it's nothing. β¨
πΈ NAME πΈ
cc-tool β control Texas Instruments CC Debugger
π SYNOPSIS π
cc-tool [options]
π DESCRIPTION π
cc-tool provides support of Texas Instruments CC Debugger and several evaluation boards to program TI 8051-based System-On-Chip devices. That's the whole vibe. It talks to the debugger, the debugger talks to the chip, the chip gets your firmware. Iconic. π«Ά
π SUPPORTED DEVICES π
Here's the hardware guest list β if your thing isn't on it, it's not coming to the party:
- CC Debugger (
VID: 0x0451PID: 0x16a2) - SmartRF04 Evaluation Board (
VID: 0x11a0PID: 0xdb20) - SmartRF04 Evaluation Board (Chinese) (
VID: 0x11a0PID: 0xeb20) - SmartRF05 Evaluation Board (
VID: 0x0451PID: 0x16a0)
π¦ SUPPORTED TARGETS π¦
The chips it will happily talk to:
CC2540 CC2541 CC2543 CC2544 CC2545 CC2530 CC2531 CC2533 CC2430 CC2431 CC2510 CC2511 CC1110 CC1111
β¨ OPTIONS β¨
-h,--helpβ print help message. the "hello what do I do" button π₯Ί-d,--device bus_number:device_numberβ set programmer device usb address. Only use this if you've got several CC Debugger devices plugged into the system at the same time β otherwise chill. (you can use thelsusbutility to enumerate devices connected to the system, iykyk) π-f,--fastβ set fast debug interface speed. (by default: slow) β‘-i,--read-info-page [file_name]β read target info page (if target supports any). If no file-name specified, data will be send to standard output. no filename? it just yells it at your terminal π¬-r,--read file_nameβ read flash memory and save to the specified file π-a,--read-mac-addressβ read target's mac address(es) (if target supports any).-b,--write-mac-address xx:xx:xx:xx:xx:xx[:xx:xx]β write target's secondary mac address (if target supports any). mac address should be specified in hex notation, MSB first. The length of the address must be 6 or 8 bytes depending on target. so like, don't freestyle the length bestie π-p,--preserve-mac-addressβ before erasing target (secondary) mac address is read out and will be written back after flash programming. saving it so it doesn't get ghosted π»-e,--eraseβ erase flash memory completely and reset lock bits. full wipe, no crumbs π§Ή-w,--write file_name[,offset]β write specified file into flash memory. Optional offset value (in decimal) is an absolute target flash address and supported only for binary files. Option--writemay be specified several times to build composite flash image from several hex and/or binary files, apply binary patches etc. Files will be merged in the order they appear in the command line. order matters, fr fr π§©-v,--verify [method]β verify flash after writing. Method can becrc(default) orread. Methodreadmeans that after writing all modified flash content is read back and compared to input flash image. Methodcrcmeans that after writing is completed target is configured to calculate CRC-16 over own flash and send results back so it ca be compared to crc of the input flash image. Methodcrcis much faster against read out all flash data. (yes, "it ca be" is literally what the original says, I'm not touching it π) π-t,--testβ search for programmer and target and print various information of them. vibe check on your whole setup β¨-l,--lock lock_dataβ specify lock data as hex string or list of lock qualifiers. Hex data must be exactly 1 byte (2 hex digits) or 16 bytes (32 hex digits), LSB first, depending on target. Lock qualifiers correspond to lock bit of target (see target datasheet). Not all targets support all qualifiers. Qualifiers are:debugβ debug lock bitbootβ boot lock bit (for targets CC111x, CC243x, CC251x)pages[:n[,k[,x-y]]]β specify what pages to lock (starting with 0), if target support per-page lock. (for targets CC253x, CC254x)flash[:a]β specify the size in KB of the upper flash area to lock if target support per-flash-area-size lock (for targets CC111x, CC243x, CC251x)
Qualifier list is delimited by semicolon (See example section). π
--log [log_file]β create log file with all operations performed. Useful for debuggingcc-toolitself. Warning: if write operations is performed log file will also contain the written image! π¨--resetβ perform target reset. There's no need to use this option along with others because reset is performed anyway when needed. it does the thing on its own, so don't bother π-n,--name target_nameβ specify target name e.g.CC2530etc. If specified target does not match detected one no further actions are performed. This option is not required. lowkey optional but highkey useful π·οΈ-s,--flash-size specify target flash sizeβ specify target flash size in kilobytes. This option is required for any actions with MAC address when target is CC2430. β οΈ required, not a suggestion, for CC2430 MAC stuff
π SUPPORTED FILE FORMATS π
Supported image file formats are Intel hex or binary. Format will be determined automatically by file extension (hex or bin) or my be specified explicitly by adding ,bin or ,hex after file name. See EXAMPLES section. (and yes, "my be" β I'm keeping it exactly as written, the typos are part of the lore π)
π EXAMPLES π
Read entire flash into binary file image.xxx
cc-tool -r image.xxx,bin
Erase flash, write intel hex file image.hex and verify flash using default method
cc-tool -v -e -w image.hex
Merge file image.hex and patch.bin (at offset 80), write resulting image, verify flash using read method
cc-tool -v read -w image.hex --write patch.bin,80
Set debug lock bit
cc-tool --lock debug
Set debug lock bit and lock pages 0,1,2,3,4
cc-tool --lock debug;pages:0-4
Set debug lock bit, boot lock bit, and set lock size 8K
cc-tool --lock debug;boot;flash:8
π EXIT STATUS π
cc-tool returns a zero exist status if all action were performed successfully. Non zero is returned in case of failure. zero = slay, non-zero = something went wrong bestie π
π AUTHOR π
George Stark (george-u (at) yandex.com)
and that's the whole page!! this was cc-tool version 0.26+, dated March 01 2013, from the cc-tool(1) manual. go flash something iconic, bestie πβ¨π
π¦ where this page comes from
- debian bookworm: cc-tool 0.27-1+b4 Β· GPL-2.0-only
- debian trixie: cc-tool 0.27-1+b5 Β· GPL-2.0-only
- nixos 26.05: cc-tool 0.27-unstable-2025-10-17
- nixpkgs unstable: cc-tool 0.27-unstable-2025-10-17
- opensuse-leap 16.0: cc-tool 0.27-bp160.1.12 Β· GPL-2.0-only
- opensuse-leap 16.0: cc-tool 0.27-bp160.1.12 Β· GPL-2.0-only
- opensuse-leap 16.0: cc-tool 0.27-bp160.1.12 Β· GPL-2.0-only
- opensuse-leap 16.0: cc-tool 0.27-bp160.1.12 Β· GPL-2.0-only
- ubuntu jammy: cc-tool 0.27-1build2 Β· GPL-2.0-only
- ubuntu noble: cc-tool 0.27-1build5 Β· GPL-2.0-only
- ubuntu resolute: cc-tool 0.27-1build7 Β· GPL-2.0-only
- ubuntu stonking: cc-tool 0.27-2 Β· GPL-2.0-only
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms