The latest firmware version can be downloaded as .apk
from version.json. All devices use the same BoltApp.apk
. The BoltApp
gets started by another application BoltLauncher
and can be found on the device at /system/priv-app/BoltLauncher/BoltLauncher.apk
.
Another interesting endpoint is firmware.json (bolt, bolt2, roam).
adb install -r BoltApp.apk
Known versions of BoltLauncher
are:
Device | Code | Name | Info |
---|---|---|---|
ELEMNT | 63 | 1.2.0.3 | boltlauncher |
BOLT2 | 10 | 1.0.10 | boltlauncher2 |
Enable ADB mode by pressing the power button twice, disconnect and reconnect the USB cable. RUN adb devices
to see if it works. This method works on the ELEMNT
, BOLT
, BOLT2
and ROAM
.
The .zip contains bolt-65535.cfg, comp.cfg poi.cfg and routes.cfg
# create special directory
adb shell mkdir /sdcard/config_backup
# save to pc
adb pull /sdcard/config_backup/elemnt_config.zip .
# create special directory
adb shell mkdir /sdcard/config_restore
# save to pc
adb push elemnt_config.zip /sdcard/config_restore/elemnt_config.zip
# reboot device
adb shell reboot
Open Street Map is the source of the map data. MapsForge is used to generate the maps. wahooMapsCreator is a project with scripts to create maps.
Generate routing tiles with Valhalla/Mjolnir. The BOLT2 supports elevation.
I'm not sure if this is the correct way of creating a custom image. I expect something did go wrong while creating a system image, my device has around 200MB of free space with only 1 map.
#!/bin/sh
# backup.sh
for i in boot system recovery nvdata ; do
adb pull /dev/block/platform/mtk-msdc.0/by-name/$i elemnt-backup-$i.img
done
tar czf elemnt-backup.tar.gz *.img
Keep the backups somewhere safe, Wahoo does NOT provide images.
tar xzf elemnt-backup.tar.gz elemnt-backup-system.img
Recreate a system image without changing anything and flash it to make sure it works.
# create a system directory
mkdir -p system
# mount the system image
sudo mount -t ext4 -o loop elemnt-backup-system.img system/
# create new image
sudo ./android_img_repack_tools/make_ext4fs -s -l 504M -a system new-system.img system/
# umount system
sudo umount system/
Now flash the image.
# create a system directory
mkdir -p system
# mount the system image
sudo mount -t ext4 -o loop elemnt-backup-system.img system/
Add bolt.wahoofitness.com
to the hosts file:
sudo sh -c "echo '127.0.0.1 bolt.wahoofitness.com'" >> system/etc/hosts
The default BoltApp.apk is included in the BoltLauncher.apk. To install a modified .apk later you need to resign them both. First create a keystore to resign the .apks with.
The keytool requires you to enter a password and some information (empty information works) and asks if the data is correct. Respond with
yes
. Give it another password for thecert
and a keystore is generated.
keytool -genkey -keystore wahoo.keystore -alias cert -keyalg RSA -keysize 2048 -validity 10000
# decode BoltLauncher with apktool
apktool d -r -s system/priv-app/BoltLauncher/BoltLauncher.apk -o BoltLauncher
# remove all files from META-INF in the BoltApp.apk
zip -d BoltLauncher/assets/BoltApp.apk META-INF/CERT.RSA META-INF/CERT.SF META-INF/MANIFEST.MF
# resign BoltApp.apk
jarsigner -sigalg MD5withRSA -digestalg SHA1 -keystore wahoo.keystore BoltLauncher/assets/BoltApp.apk cert
# remove all files from META-INF in BoltLauncher
rm -fr BoltLauncher/original/META-INF/*
# rebuild BoltLauncher
apktool b BoltLauncher -o BoltLauncher.apk
# resign BoltLauncher.apk
jarsigner -sigalg MD5withRSA -digestalg SHA1 -keystore wahoo.keystore BoltLauncher.apk cert
# copy BoltLauncher back to the system image
sudo cp BoltLauncher.apk system/priv-app/BoltLauncher/BoltLauncher.apk
Remove some apps from system/app
(I removed Camera2, Gallery2, Calendar2, Calendar and Calculator) to make it stop complaining about no space left
.
#!/bin/sh
# remove-apps.sh
for i in Camera2 Gallery2 Calendar2 Calendar Calculator; do
sudo rm -fr system/app/$i
done
sudo ./android_img_repack_tools/make_ext4fs -s -l 504M -a system new-system.img system/
sudo umount system/
Don't do this, this will void the warranty (bootloader) warranty: no
.
Reboot the device with adb shell reboot bootloader
. The screen goes blank and fastboot shoult start, test it with sudo fastboot devices
. Unlock with sudo fastboot oem unlock
and press the power button on the device to start unlocking. The output should be something like:
(bootloader) Start unlock flow
OKAY [ 9.707s]
Check it with sudo fastboot getvar all
, Unlocked: yes
. Start the device with sudo fastboot continue
Run adb shell reboot bootloader
and test with sudo fastboot devices
.
Make sure the device is turned off, run the following script as with sudo fastboot.sh
and connect the USB cable.
#!/bin/sh
# fastboot.sh
echo -n "Waiting for Elemnt"
until [ -c "/dev/ttyACM0" ]; do
echo -n "."
sleep 1
done
echo -n 'FASTBOOT' > /dev/ttyACM0
echo " Starting fastboot mode"
sleep 2
fastboot devices
# start fastboot
adb shell reboot bootloader
# flash the image
sudo fastboot flash system new-system.img
# remove old stuff
sudo fastboot format cache
sudo fastboot format userdata
# boot the device
sudo fastboot continue
Check the version number and change the url.
# download BoltApp.apk
wget -O BoltApp.apk https://cdn.wahooligan.com/wahoo-fwu/elemnt/boltapp/6922/BoltApp.apk
# remove META-INF files
zip -d BoltApp.apk META-INF/CERT.RSA META-INF/CERT.SF META-INF/MANIFEST.MF
# resign BoltApp.apk
jarsigner -sigalg MD5withRSA -digestalg SHA1 -keystore wahoo.keystore BoltApp.apk cert
# copy BoltApp.apk to BoltLauncher
cp BoltApp.apk BoltLauncher/assets/BoltApp.apk
Rebuild the BoltLauncher, copy the BoltLauncher.apk to the system and build a new system image.
# download BoltApp.apk
wget -O BoltApp.apk https://cdn.wahooligan.com/wahoo-fwu/elemnt/boltapp/6922/BoltApp.apk
# remove META-INF files
zip -d BoltApp.apk META-INF/CERT.RSA META-INF/CERT.SF META-INF/MANIFEST.MF
# resign BoltApp.apk
jarsigner -sigalg MD5withRSA -digestalg SHA1 -keystore wahoo.keystore BoltApp.apk cert
# install with adb
adb install -r BoltApp.apk
- openjdk
git clone -b android-5.1.0 https://github.com/ASdev/android_img_repack_tools
cd android_img_repack_tools
./configure
make
cd ..
Thanks to Team Wahoo for making this device! :D Joshua, from the blog posts to make me decide to buy the Elemnt.
The pages are included in the backup, config-backup displaycfg.
The ELEMNT app sends the pages over bluetooth so that's another method.