The OpenBikeControl Certification Program ensures that BLE controllers meet quality standards and work seamlessly with participating cycling trainer applications. Certification is voluntary but highly recommended for manufacturers who want their devices officially recognized and supported.
- Official Device Listing - Your device listed in the OpenBikeControl certified devices directory
- Compatibility Badge - Use the "OpenBikeControl Certified" badge in marketing materials
- Button Mapping Repository - Device-specific button mappings included in the official repository
- Technical Support - Access to implementation guides and technical assistance
- App Integration - Participating apps include your device's button mappings by default
- Community Trust - Certification signals quality and standards compliance to users
- Marketing Visibility - Featured on the OpenBikeControl website and partner communications
- Pre-configured Mappings - Access to certified device button definitions
- Quality Assurance - Confidence that devices meet minimum standards
- Reduced Support Burden - Fewer compatibility issues with certified devices
- Easy Integration - Reference implementations and tested configurations
- Guaranteed Compatibility - Certified devices work with all participating apps
- Quality Standards - Devices meet minimum performance and reliability criteria
- Easy Setup - Pre-configured button mappings work out of the box
- Ongoing Support - Certified manufacturers commit to firmware updates and support
Devices must meet the following technical standards:
- Implement OpenBikeControl BLE service UUID (
d273f680-d548-419d-b9d1-fa0472345229) - Implement Button State characteristic (
d273f681-d548-419d-b9d1-fa0472345229) with correct data format - Implement standard BLE Device Information Service (
0x180A) - Implement Battery Service (
0x180F) for battery-powered devices - Do NOT use manufacturer-specific advertisement data (Apple compatibility requirement)
- Send notifications only on button state changes (not continuous polling)
- Button response latency < 50ms (press to notification)
- BLE connection range ≥ 10 meters in open space
- Battery life ≥ 40 hours typical use (if battery-powered)
- Reliable debouncing (no spurious button presses)
- Support connection intervals down to 7.5ms
- Hardware: Durable construction suitable for cycling environment
- Buttons: Minimum 100,000 press lifecycle
- Water resistance: IPX4 minimum (splash resistant)
- Firmware: Support OTA updates (recommended) or documented update procedure
- Documentation: User manual and setup guide in English
Manufacturers must provide:
-
Device Specification Sheet
- Hardware specifications
- Button layout and physical description
- Battery specifications (if applicable)
-
Button Mapping Definition
- Complete mapping of physical buttons to OpenBikeControl button IDs
- Description of analog inputs (if applicable)
- Default button assignments
-
Developer Documentation
- BLE characteristics documentation, if additions are made to the OpenBikeControl protocol
- Sample connection code, if additions are made to the OpenBikeControl protocol
-
Review Protocol Specification
- Read PROTOCOL.md thoroughly
- Ensure your device design complies with all requirements
-
Self-Testing
- Test with BLE debugging tools (nRF Connect, LightBlue)
- Verify all required characteristics are discoverable
- Test button state notifications
- Measure response latency
-
Prepare Documentation
- Complete device specification sheet
- Create button mapping definition file
- Prepare user and developer documentation
Submit a certification request by creating a GitHub Pull Request:
-
Fork the Repository
git clone https://github.com/jonasbark/swiftcontrol-protocol.git cd swiftcontrol-protocol git checkout -b certification/your-device-name -
Add Device Definition
Create a new file in
devices/<manufacturer>/<model>.json:{ "manufacturer": "ExampleCorp", "model": "SC-100", "name": "OpenBikeControl Remote Pro", "version": "1.0", "certification_date": "2024-01-15", "device_info": { "firmware_version": "1.2.3", "hardware_version": "1.0", "serial_prefix": "SC1" }, "specs": { "buttons": 8, "analog_inputs": 2, "battery_type": "CR2032", "battery_life_hours": 500, "water_resistance": "IPX4", "weight_grams": 45, "dimensions_mm": { "width": 50, "height": 80, "depth": 20 } }, "button_mapping": [ { "physical_button": "Left Paddle", "button_id": 1, "standard_action": "Shift Up", "type": "digital" }, { "physical_button": "Right Paddle", "button_id": 2, "standard_action": "Shift Down", "type": "digital" }, { "physical_button": "Joystick Up", "button_id": 16, "standard_action": "Navigate Up", "type": "digital" }, { "physical_button": "Joystick Down", "button_id": 17, "standard_action": "Navigate Down", "type": "digital" }, { "physical_button": "A Button", "button_id": 20, "standard_action": "Select", "type": "digital" }, { "physical_button": "B Button", "button_id": 21, "standard_action": "Back", "type": "digital" }, { "physical_button": "Left Trigger", "button_id": 48, "standard_action": "ERG Down", "type": "analog", "range": "0-255" }, { "physical_button": "Right Trigger", "button_id": 49, "standard_action": "ERG Up", "type": "analog", "range": "0-255" } ], "ble_services": { "primary_service": "d273f680-d548-419d-b9d1-fa0472345229", "button_characteristic": "d273f681-d548-419d-b9d1-fa0472345229", "device_information": true, "battery_service": true }, "connectivity": { "ble": true, "mdns": false, "connection_range_meters": 15 }, "support": { "website": "https://example.com/sc100", "firmware_updates": "OTA via mobile app", "warranty_years": 2, "support_email": "support@example.com" }, "certifications": { "ce": true, "fcc": true, "rohs": true } } -
Add Documentation
Create
devices/<manufacturer>/<model>/README.mdwith:- Setup instructions
- Pairing guide
- Button layout diagram (image)
- Troubleshooting guide
-
Add Marketing Assets (Optional)
Include in
devices/<manufacturer>/<model>/:- Product image (product.jpg)
- Button layout diagram (button_layout.png)
- Logo (logo.png)
-
Submit Pull Request
git add devices/ git commit -m "Add certification for ExampleCorp SC-100" git push origin certification/your-device-nameCreate a PR with the title: "Certification: [Manufacturer] [Model]"
The OpenBikeControl team will review your submission:
-
Documentation Review (1-2 business days)
- Verify all required documentation is complete
- Check button mapping definitions
- Review technical specifications
-
Technical Testing (3-5 business days)
- Connect to device via BLE
- Verify service and characteristic UUIDs
- Test button state notifications
- Test with 2+ compatible apps
-
Compatibility Testing (3-5 business days)
- Test pairing with iOS and Android devices
- Verify button mappings work as documented
- Test battery reporting
-
Feedback and Iteration
- Issues or suggestions communicated via PR comments
- Manufacturer addresses feedback
- Re-review if necessary
Once approved:
-
Certification Badge
- Receive official "OpenBikeControl Certified" badge
- Usage guidelines provided
- Badge valid for device hardware version
-
Device Listing
- Device added to official certified devices list
- Published on OpenBikeControl website
- Included in app developer documentation
-
Repository Merge
- Your device definition merged to main branch
- Available for app developers to integrate
- Versioned and maintained
- Minor firmware updates: No re-certification required
- Major protocol changes: May require re-certification
- Notify OpenBikeControl team of significant updates
Recertification required for:
- New hardware versions
- Major firmware changes affecting protocol compliance
- Changes to button mappings
- Additional features (e.g., adding analog inputs)
Recertification follows expedited process for previously certified manufacturers.
Please contact certification@swiftcontrol.app and we will find a fair price - or none at all!
Certification may be withdrawn if:
- Device fails to meet standards after market release
- Manufacturer makes undocumented protocol changes
- Safety or quality issues are reported
- Manufacturer requests withdrawal
Withdrawal process:
- Written notice provided to manufacturer
- 30-day period to address issues
- If unresolved, device removed from certified list
- Public notice published
Ready to certify your device?
- Review the Protocol Specification
- Build and test your device implementation
- Prepare your documentation
- Submit your certification PR
- Work with the team through the review process
- Open a GitHub Issue with the
certificationlabel - Email: certification@swiftcontrol.app
Once devices are certified, they will be listed here with:
- Manufacturer and model
- Certification date
- Key features
- Where to buy
- Support links
Manufacturers may use the certification badge on:
- Product packaging
- Marketing materials
- Website and documentation
- Retail listings
- Only use current/valid certification badge
- Do not modify badge design
- Include badge version number (hardware version)
- Link badge to OpenBikeControl website when used digitally
Do not use badge if:
- Certification has expired or been withdrawn
- Device hardware has changed without recertification
- Using on non-certified products
The certification program improves through community input:
- Suggest Requirements - Propose new technical or quality standards
- Testing Tools - Contribute testing scripts and utilities
- App Integration - Help integrate certified devices into trainer apps
- Documentation - Improve certification guides and templates
- Translation - Translate certification docs to other languages
All contributions welcome via GitHub Issues and Pull Requests.
The OpenBikeControl Certification Program documentation is released under the MIT License.