97 lines
4.3 KiB
Markdown
97 lines
4.3 KiB
Markdown
# PineBuds Open Source SDK
|
|
|
|
This is just the SDK from the wiki (so far), with dockerfile setup to make building easier, and my reverse engineered bestool integrated.
|
|
The docker image will build bestool for you first, then drop you into the dev container for building and flashing the buds.
|
|
|
|
## Usage
|
|
|
|
To use this setup to build & flash your PineBuds you will need a system with docker setup at the minimum.
|
|
Docker is used to (1) make this all much more reprodicible and easier to debug and (2) so that we dont mess with your host system at all.
|
|
In order to program the buds from inside of the docker container; privileged mode is used. So do be a tad more careful than usual.
|
|
|
|
```bash
|
|
|
|
./start_dev.sh # This will cause docker to start your working environment; this should take roughly 1-3 minutes depending on your network speed to the GCC hosting server
|
|
|
|
# Now you will be inside of the container, and your prompt will look akin to "root@ec5410d0a265:/usr/src#"
|
|
|
|
./build.sh # This will run make and build the output program. If you have weird build errors try running clean.sh or rm -rf'ing the out folder first
|
|
|
|
# Now that the firmware has finished building; if there are no errors you can load it to your buds
|
|
|
|
# You may want to back up the firmware currently on the buds - it will be deleted when the new firmware is loaded on:
|
|
./backup.sh
|
|
|
|
# You may need to take the buds out of the case, wait three seconds, place them back. This wakes them up and the programmer needs to catch this reboot.
|
|
|
|
# You can try the helper script by running
|
|
./download.sh
|
|
|
|
# Or do it manually by :
|
|
|
|
# Assuming that your serial ports are 0 and 1, run the following to commands to program each bud in series.
|
|
bestool write-image out/open_source/open_source.bin --port /dev/ttyACM0
|
|
bestool write-image out/open_source/open_source.bin --port /dev/ttyACM1
|
|
```
|
|
|
|
## Changelist from stock open source SDK
|
|
|
|
- Long hold (5 ish seconds) the button on the back when buds are in the case to force a device reboot (so it can be programmed)
|
|
- Use the resistor in the buds to pick Left/Right rather than TWS master/slave pairing
|
|
- Pressing the button on the back while in the case no longer triggers DFU mode
|
|
- Debugging baud rate raised to 2000000 to match stock firmware
|
|
- Fixed TWS operation such that putting either bud into the case correctly switches to the other bud
|
|
- Working (mostly) audio controls using the touch button on the buds
|
|
- Turned off showing up as a HID keyboard, as not sure _why_ you would; but it stops android nagging me about a new keyboard
|
|
|
|
## Current bud tap codes
|
|
|
|
### Both pods active
|
|
|
|
#### Right Ear:
|
|
|
|
- Single tap : Play/Pause
|
|
- Double tap : Next track
|
|
- Hold : Toggle ANC(Currently non functional, WIP)
|
|
- Triple tap : Volume Up
|
|
|
|
#### Left Ear:
|
|
|
|
- Single tap : Play/Pause
|
|
- Double tap : Previous track
|
|
- Hold : Toggle ANC(Currently non functional, WIP)
|
|
- Triple tap : Volume Down
|
|
|
|
### Single pod active
|
|
|
|
- Single tap : Play/Pause
|
|
- Double tap : Next track
|
|
- Hold : Previous track
|
|
- Triple tap : Volume Up
|
|
- Quad tap : Volume Down
|
|
|
|
## Changing audio alerts
|
|
|
|
The default audio alerts are stored in:
|
|
|
|
`config/_default_cfg_src_/res/en/`
|
|
|
|
If you want to change the alert to a custom sound, just replace the sound file you'd like to change
|
|
(ie `config/_default_cfg_src_/res/en/SOUND_POWER_ON.opus`) with your own audio file with the same base
|
|
name (ie `config/_default_cfg_src_/res/en/SOUND_POWER_ON.mp3`) and recompile with `./build.sh`!
|
|
|
|
### Language support
|
|
|
|
The `AUDIO` environment variable can be set when running the `build.sh` script to load sound files
|
|
for languages other than the default English. For example, running `AUDIO=cn ./build.sh` will load sounds files from
|
|
`config/_default_cfg_src_/res/cn/` instead of the default `en/` folder.
|
|
|
|
The current languages supported with sound files are English (`en`) and Chinese (`cn`). Other languages
|
|
(or other sets of custom sounds) may be added by adding all the correct sound files into a
|
|
`config/_default_cfg_src_/res/<custom_sounds>/` directory and building with `AUDIO=<custom_sounds> ./build.sh`.
|
|
|
|
### Blue light when connected
|
|
|
|
The firmware can be configured to either have a blinking blue light when connected or not.
|
|
Build with `CONNECTED_BLUE_LIGHT=1 ./build.sh` to enable blinking when connected,
|
|
or `CONNECTED_BLUE_LIGHT=0 ./build.sh` (or just the default `./build.sh`) to keep the LEDs off when connected.
|