Use your Keiser M3 bike with apps like Zwift without buying a converter from Keiser which never really worked for me. This project was built to use make use of a Raspberry pi with 2 bluetooth adapters. Other systems may work but your on your own to get it setup. Two bluetooth adapters are required to make this work. I use the built in one on a Raspberry Pi 3/4 or the Pi Zero W and an additional one plugged into the usb port. The steps to install are below.
Any one available from Amazon with linux support should work but I have tried these:
sudo systemctl stop bluetooth
sudo systemctl disable bluetooth
sudo mv /usr/lib/bluetoothd bluetoothd.bak
sudo apt-get install bluetooth bluez libbluetooth-dev libudev-dev
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash
nvm install 10.22.0
npm install
sudo hciconfig hci0 up
sudo hciconfig hci1 up
hcitool dev
sudo npm start
Run the following command:
sudo setcap cap_net_raw+eip $(eval readlink -f `which node`)
This grants the node
binary cap_net_raw
privileges, so it can start/stop BLE advertising.
Note: The above command requires setcap
to be installed, it can be installed using the following:
sudo apt-get install libcap2-bin
su -c \'yum install libcap2-bin\'
You can setup the program to run at Pi boot time by doing the following steps:
sudo cp keiser.service /etc/systemd/system
sudo systemctl enable keiser
sudo systemctl start keiser
systemctl status keiser
Several people have reported issues at system boot with both adapters being recognized. A known work around by @djwasser is described in issue: https://github.com/hypermoose/Keiser2Zwift/issues/2
I leveraged several other great projects to build this. They are: