- Tools
- Enable ADB
- Tips and Tricks
- Unlock the bootloader
- Create keystore
- Custom images
- Update BoltApp.apk
- Thanks
- openjdk
git clone -b android-5.1.0 https://github.com/ASdev/android_img_repack_tools
cd android_img_repack_tools
./configure
make
cd ..
Enable ADB mode by pressing the power button twice, disconnect and reconnect the USB cable. RUN adb devices
to see if it works.
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
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
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
#!/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
# 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/
# 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
Thanks to Team Wahoo for making this device! :D Joshua, from the blog posts to make me decide to buy the Elemnt.