Some tools used for Pebble firmware.
Python Shell
Pull request Compare This branch is 788 commits ahead, 1 commit behind xndcn:master.
Latest commit b3b8bb9 Jan 27, 2017 @MarSoft fontgen: better descr
Permalink
Failed to load latest commit information.
libpatcher Fixed binary used in tests May 24, 2016
libpebble adapted stm32_crc for py3 Jul 1, 2015
.gitignore .gitignore: ignore vim's swap files Apr 14, 2014
29to30.sh Added reference script for copying localization from v2.9 fw to v3.0 Jun 29, 2015
LICENSE Updated README, added license (GPL2) Jul 29, 2014
README.md Updated README, added license (GPL2) Jul 29, 2014
calculateCrc.py typo fix in calculateCrc Nov 15, 2013
downloadFirmware.py Fixed downloading for 3.8+ firmwares Mar 30, 2016
extract_codepoints.py extract_codepoints: save metadata to dirname/list.json Jan 27, 2017
findlog.sh findlog fix? Mar 26, 2016
findrefs.py Updated base address to 8004000 (which fits all v3.x fw) Dec 16, 2015
fontgen.py fontgen: better descr Jan 27, 2017
fonts.txt Added font info for 3.11/Aplite Apr 15, 2016
generate_c_byte_array.py Added fontgen from pebble sdk Aug 29, 2015
getver.sh Fixed ver url for getver.sh Mar 30, 2016
img2c.py Added img2c script to convert image files from resource format to C d… Mar 8, 2015
lib2idc.py Fixed offsets marking Jul 25, 2016
mkfonts.sh Fixed lang printing Jan 1, 2016
packResources.sh packResources: default sdk path Dec 16, 2015
patcher.py linting May 24, 2016
pbpack.py Fixed TemporaryFile calling Jun 1, 2016
prepareResourceProject.py prepareResourceProject: minor bugfix with symlink Nov 16, 2013
repackFirmware.py Don't update crc if resources didn't change Mar 26, 2016
showimg.py showimg: allow changing base Jun 5, 2015
translate.py Translate.py: support not-aligned pointers Oct 2, 2014
unpackFirmware.py unpackFirmware: removed py2 dep as it works with py3 as well May 31, 2016
updatefw.sh updatefw: more helpful error msg Jul 25, 2016

README.md

Pebble Firmware Utils

Some tools used for Pebble firmware. All tools written by me are licensed by GPL2, others are property by their corresponding developers. Now include:

downloadFirmware.py

by SouthWolf@github

It will download the latest firmware for Pebble.

unpackFirmware.py

original version by xndcn@github and SouthWolf@github, improved by MarSoft@github usage: "unpackFirmware.py normal.pbz [output_dir]"

It will extrack files and resources from normal.pbz Using stm32_crc.py from https://github.com/PebbleDev/libpebble.git, thanks!

repackFirmware.py

Update checksums and pack firmware package with modified resources or tintin_fw binary

calculateCrc.py

Calculates CRC sum of given file

translate.py

Tool to translate interface of watch to most languages. Uses data in .po format, available at https://poeditor.com/projects/view?id=13860

patcher.py

Simple variant of assembler made to ease process of patching firmware to implement missing functionality or change other stuff. This program applies patches writen in assembler-like language to tintin_fw.bin file from firmware

Uses data in custom .pbp format. Particular patches are available at http://github.com/MarSoft/pebble_firmware_patches.

findrefs.py

A tool which takes hexadecimal address, which is a memory address of string or function (for functions you should use odd number, i.e. actual address + 1). It will find all (or most of) references to that address in given tintin binary. It supports direct references (aligned by 4), BL and B.W references (aligned by 2).

lib2idc.py

This tool takes out relocation table for API functions from libpebble.a from SDK and converts it to IDA's IDC format. Note that resulting file must be further tweaked for your firmware.

showimg.py

Displays b&w image from either tintin binary (by offset) or from resource file using '#' for white and ' ' for black.

prepareResourceProject.py

Obsolete and currently unsupported project. It prepares a Pebble app project to use for repacking resource bundle (pbpack).