Jelling is a simple daemon for Linux which receives OTP tokens from FreeOTP.
Dependencies
* systemd >= 221
* bluez >= 5.42
How to Build and Install
# meson build
# ninja -C build
# ninja -C build install
How to Run
-
Start and enable Jelling:
systemctl enable --now jelling.service
Test Results
Device | OS | Adv. | Connect | Discovery | Pair | GATT |
---|---|---|---|---|---|---|
iPhone 6+ | iOS 11.2 | ✔ | ✔ | ✔ | ✔ | ✔ |
Nexus 5x | LineageOS 14.1 | ✔ | ✔ | ✘ | ✘ | ✘ |
Pixel | Android 8.1 beta | ✔ | ✘ | ✘ | ✘ | ✘ |
How to Test
-
Make sure your phone and computer are NOT paired.
-
Start Jelling on your computer.
-
Install and open LightBlue on your phone.
-
Does LightBlue see your computer within a few seconds (<30)? If so, advertisement is working.
-
Click on your computer in LightBlue. Does it successfully connect? Do you see Jelling among the list of services? The Jelling Service UUID is:
B670003C-0079-465C-9BA7-6C0539CCD67F
. If so, connection and service discovery are working. If not, you'll have to get Bluetooth packet logs to see whether connection or service discovery is failing. -
Click on the service. Do you see the Jelling characteristic? The Jelling Characteristic UUID is:
B670003C-0079-465C-9BA7-6C0539CCD67F
. Is it listed as write-only? If so, discovery is working. -
Attempt to perform a write operation in LightBlue against the characteristic. A good test value is
30
(which is hex for0
in ASCII). Does the device attempt to pair? Does it succeed? If so, pairing is working. -
If pairing succeeds, perform the previous step again. This time, instead of pairing it should perform the actual GATT write. Does your computer type
0
? If so, the GATT write is working. -
Submit a pull request which updates the above table with your test results.