{"id":37028327,"url":"https://github.com/sputnikdev/bluetooth-manager-tinyb","last_synced_at":"2026-01-14T03:23:00.431Z","repository":{"id":57740846,"uuid":"99411057","full_name":"sputnikdev/bluetooth-manager-tinyb","owner":"sputnikdev","description":"A transport implementation for the Bluetooth Manager based on TinyB library","archived":false,"fork":false,"pushed_at":"2018-09-25T03:06:25.000Z","size":2345,"stargazers_count":23,"open_issues_count":4,"forks_count":7,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-07-12T07:34:37.955Z","etag":null,"topics":["ble","bluetooth","bluetooth-low-energy","bluetooth-manager","bluetooth-smart","gatt","tinyb-library","transport"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sputnikdev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-08-05T08:51:49.000Z","updated_at":"2023-12-08T12:29:40.000Z","dependencies_parsed_at":"2022-09-06T20:32:02.762Z","dependency_job_id":null,"html_url":"https://github.com/sputnikdev/bluetooth-manager-tinyb","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/sputnikdev/bluetooth-manager-tinyb","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sputnikdev%2Fbluetooth-manager-tinyb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sputnikdev%2Fbluetooth-manager-tinyb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sputnikdev%2Fbluetooth-manager-tinyb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sputnikdev%2Fbluetooth-manager-tinyb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sputnikdev","download_url":"https://codeload.github.com/sputnikdev/bluetooth-manager-tinyb/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sputnikdev%2Fbluetooth-manager-tinyb/sbom","scorecard":{"id":842850,"data":{"date":"2025-08-11","repo":{"name":"github.com/sputnikdev/bluetooth-manager-tinyb","commit":"94b3d8705fc269f4136cfa878e8b5a710114a096"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.1,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":3,"reason":"binaries present in source code","details":["Warn: binary detected: lib/tinyb.jar:1","Warn: binary detected: src/main/resources/native/arm/armv6/libjavatinyb.so:1","Warn: binary detected: src/main/resources/native/arm/armv6/libtinyb.so:1","Warn: binary detected: src/main/resources/native/linux/x86_32/libjavatinyb.so:1","Warn: binary detected: src/main/resources/native/linux/x86_32/libtinyb.so:1","Warn: binary detected: src/main/resources/native/linux/x86_64/libjavatinyb.so:1","Warn: binary detected: src/main/resources/native/linux/x86_64/libtinyb.so:1"],"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-23T20:51:10.885Z","repository_id":57740846,"created_at":"2025-08-23T20:51:10.885Z","updated_at":"2025-08-23T20:51:10.885Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28408828,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T01:52:23.358Z","status":"online","status_checked_at":"2026-01-14T02:00:06.678Z","response_time":107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ble","bluetooth","bluetooth-low-energy","bluetooth-manager","bluetooth-smart","gatt","tinyb-library","transport"],"created_at":"2026-01-14T03:22:59.741Z","updated_at":"2026-01-14T03:23:00.424Z","avatar_url":"https://github.com/sputnikdev.png","language":"Java","readme":"[![Maven Central](https://img.shields.io/maven-central/v/org.sputnikdev/bluetooth-manager-tinyb.svg)](https://mvnrepository.com/artifact/org.sputnikdev/bluetooth-manager-tinyb)\n[![Build Status](https://travis-ci.org/sputnikdev/bluetooth-manager-tinyb.svg?branch=master)](https://travis-ci.org/sputnikdev/bluetooth-manager-tinyb)\n[![Coverage Status](https://coveralls.io/repos/github/sputnikdev/bluetooth-manager-tinyb/badge.svg?branch=master)](https://coveralls.io/github/sputnikdev/bluetooth-manager-tinyb?branch=master)\n[![Codacy Badge](https://api.codacy.com/project/badge/Grade/478caa4b9498441f89bd1a880b7f8b53)](https://www.codacy.com/app/vkolotov/bluetooth-manager-tinyb?utm_source=github.com\u0026amp;utm_medium=referral\u0026amp;utm_content=sputnikdev/bluetooth-manager-tinyb\u0026amp;utm_campaign=Badge_Grade)\n[![Join the chat at https://gitter.im/sputnikdev/bluetooth-manager-tinyb](https://badges.gitter.im/sputnikdev/bluetooth-manager-tinyb.svg)](https://gitter.im/sputnikdev/bluetooth-manager-tinyb?utm_source=badge\u0026utm_medium=badge\u0026utm_campaign=pr-badge\u0026utm_content=badge)\n# bluetooth-manager-tinyb\nA transport implementation for the [Bluetooth Manager](https://github.com/sputnikdev/bluetooth-manager) based on [TinyB](https://github.com/intel-iot-devkit/tinyb) library.\n\nThe Bluetooth Manager is a set of java APIs which is designed to streamline all the hard work of dealing with unstable \nby its nature Bluetooth protocol. A specially designed abstraction layer (transport) is used to bring support \nfor various bluetooth adapters/dongles, operation systems and hardware architecture types.\n\nThe following diagram outlines some details of the Bluetooth Manager Transport abstraction layer:\n\n![Transport diagram](bm-transport-abstraction-layer.png?raw=true \"Bluetooth Manager Transport abstraction layer\")\n\nThe TinyB transport brings support for:\n * Conventional USB bluetooth dongles. \n * Linux based operation systems.\n * A wide range of hardware architectures (including some ARM based devices, e.g. Raspberry PI etc).\n\n## Prerequisites\n\nYou must upgrade your Bluez software to 5.43+. This is due to some changes in the DBus API in Bluez 5.43v.\n**UPDATE**: The new Bluez version 5.48 is not recommended as it is not yet supported by TinyB library. See: https://github.com/intel-iot-devkit/tinyb/issues/131 \n\nYou can use systemctl utility to check which Bluez version you are running:\n```sh\npi@raspberrypi:~ $ sudo systemctl status bluetooth\n● bluetooth.service - Bluetooth service\n   Loaded: loaded (/lib/systemd/system/bluetooth.service; enabled)\n   Active: active (running) since Fri 2017-12-01 16:33:35 NZDT; 2 days ago\n     Docs: man:bluetoothd(8)\n Main PID: 677 (bluetoothd)\n   Status: \"Running\"\n   CGroup: /system.slice/bluetooth.service\n           └─677 /usr/libexec/bluetooth/bluetoothd\n\nDec 01 16:33:34 raspberrypi systemd[1]: Starting Bluetooth service...\nDec 01 16:33:35 raspberrypi bluetoothd[677]: Bluetooth daemon 5.47\nDec 01 16:33:35 raspberrypi systemd[1]: Started Bluetooth service.\n```\nNotice a line that contains Bluez version:\n```sh\nDec 01 16:33:35 raspberrypi bluetoothd[677]: Bluetooth daemon 5.47\n```\n \nIf you have an older Bluez version you must upgrade it. There are several ways to accomplish this (ubuntu/raspbian):\n\n### Building bluez from sources\n1. If you are using Raspberry PI, then do not uninstall existing Bluez, otherwise the internal bluetooth module won't work.\n2. Install some build tools:\n```sh\nsudo apt-get install libglib2.0-dev libdbus-1-dev libudev-dev libical-dev libreadline6 libreadline6-dev\n```\n3. Download Bluez source code, e.g: \n```sh \nwget http://www.kernel.org/pub/linux/bluetooth/bluez-5.47.tar.xz\n```\n4. Extract the tar archive: \n```\ntar -xf bluez-5.47.tar.xz \u0026\u0026 cd bluez-5.47\n```\n5. Configure Bluez project:\n```sh\n./configure --prefix=/usr --mandir=/usr/share/man --sysconfdir=/etc --localstatedir=/var\n```\n6. Build Bluez from sources:\n```sh \nmake\nsudo make install\n```\n7. Make sure that the Bluez start up service is pointing to the newly built Bluez:\n```sh\nnano /lib/systemd/system/bluetooth.service\n```\nYou should see something like that:\n```sh\nExecStart=/usr/libexec/bluetooth/bluetoothd\n```\nRun the script below to see Bluez version:\n```sh\npi@raspberrypi:~ $ cd /usr/libexec/bluetooth/\npi@raspberrypi:/usr/libexec/bluetooth $ ./bluetoothd --version\n5.47\n```\n8. Edit Bluez DBus config to add a permission to access Bluez for the bluetooth group (/etc/dbus-1/system.d/bluetooth.conf):\n```xml\n\u003cbusconfig\u003e\n  \u003cpolicy user=\"root\"\u003e\n    ...\n  \u003c/policy\u003e\n  \u003cpolicy group=\"bluetooth\"\u003e\n    \u003callow send_destination=\"org.bluez\"/\u003e\n  \u003c/policy\u003e\n  ...\n\u003c/busconfig\u003e\n```\n9. Add openhab user to the bluetooth group: \n```sh\nsudo usermod -a -G bluetooth openhab\n```\n10. Reload service definitions:\n```sh\nsudo systemctl daemon-reload\n```\n11. Restart bluez:\n```sh\nsudo systemctl restart bluetooth\n```\n\n### Another method that does not require building bluez from sources\n```sh\nsudo  apt-get install debhelper dh-autoreconf flex bison libdbus-glib-1-dev libglib2.0-dev  libcap-ng-dev libudev-dev libreadline-dev libical-dev check dh-systemd libebook1.2-dev\n\nwget https://launchpad.net/ubuntu/+archive/primary/+files/bluez_5.43.orig.tar.xz\nwget https://launchpad.net/ubuntu/+archive/primary/+files/bluez_5.43-0ubuntu1.debian.tar.xz\nwget https://launchpad.net/ubuntu/+archive/primary/+files/bluez_5.43-0ubuntu1.dsc\n\ntar xf bluez_5.43.orig.tar.xz\ncd bluez-5.43\ntar xf ../bluez_5.43-0ubuntu1.debian.tar.xz\ndebchange --local=~lorenzen 'Backport to Xenial'\ndebuild -b -j4\ncd ..\nsudo dpkg -i *.deb\n```\n\n---\n## Contribution\n\n### Building\n\nYou are welcome to contribute to the project, the project environment is designed to make it easy by using:\n* Travis CI to release artifacts directly to the Maven Central repository.\n* Code style rules to support clarity and supportability. The results can be seen in the Codacy. \n* Code coverage reports in the Coveralls to maintain sustainability. 100% of code coverage with unittests is the target.\n\nThe build process is streamlined by using standard maven tools. \n\nTo build the project you will need to install the TinyB library into your maven repository. Run this in the root of the project (use install-dependencies.bat file for windows):\n```sh\nsh .travis/install-dependencies.sh\n```\n\nThen build the project with maven:\n```bash\nmvn clean install\n```\n\nTo cut a new release and upload it to the Maven Central Repository:\n```bash\nmvn release:prepare -B\nmvn release:perform\n```\nTravis CI process will take care of everything, you will find a new artifact in the Maven Central repository when the release process finishes successfully.\n\n### Updating TinyB library\n\nAll TinyB dependencies (jar file and native libs) are manged by the project and automatically loaded in runtime, so that end-users do not have to build and install TinyB library locally.\n\nIn order to update TinyB library the following steps should be done:\n* Build TinyB library as per TinyB [documentation](https://github.com/intel-iot-devkit/tinyb#using-tinyb) for each CPU architecure type:\n  * x86_32\n  * x86_64\n  * arm6\n* Copy/replace the following files (arm architecure is used in the examples below, similar paths should be used for the other archs):\n  * \u003ctinyb\u003e/build/src/libtinyb.so to \u003cproject root\u003e/src/main/resources/native/arm/armv6/libtinyb.so\n  * \u003ctinyb\u003e/build/java/jni/libjavatinyb.so to \u003cproject root\u003e/src/main/resources/native/arm/armv6/libjavatinyb.so\n  * \u003ctinyb\u003e/build/java/tinyb.jar to \u003cproject root\u003e/lib/tinyb.jar\n* Update the TinyB \"Specification-Version\" number int the [MANIFEST.MF](https://github.com/sputnikdev/bluetooth-manager-tinyb/blob/master/src/main/resources/META-INF/MANIFEST.MF) file:\n  * Unpack tinyb.jar file which was copied earlier\n  * Find its \"Specification-Version\" in the MANIFEST.MF file (\u003ctinyb.jar\u003e/META-INF/MANIFEST.MF)\n  * Update \"Specification-Version\" in the project [MANIFEST.MF](https://github.com/sputnikdev/bluetooth-manager-tinyb/blob/master/src/main/resources/META-INF/MANIFEST.MF) file\n* Optional (if you are planning to use the project locally): Install TinyB library into your local maven repository:\n  * sh .travis/install-dependencies.sh (use install-dependencies.bat file for windows)\n* Optional (if you are planning to use the project locally): Build the project\n  * mvn clean install\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsputnikdev%2Fbluetooth-manager-tinyb","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsputnikdev%2Fbluetooth-manager-tinyb","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsputnikdev%2Fbluetooth-manager-tinyb/lists"}