{"id":25621652,"url":"https://github.com/jovannmc/haritorax-interpreter","last_synced_at":"2026-05-02T08:34:50.714Z","repository":{"id":225842319,"uuid":"766978362","full_name":"JovannMC/haritorax-interpreter","owner":"JovannMC","description":"A node.js package that allows you to communicate with the HaritoraX FBT trackers","archived":false,"fork":false,"pushed_at":"2025-10-24T19:58:42.000Z","size":1275,"stargazers_count":6,"open_issues_count":0,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-11-13T22:35:12.383Z","etag":null,"topics":["fbt","full-body-tracking","haritora","haritorax","node","nodejs","npm","shiftall","virtual-reality","vr"],"latest_commit_sha":null,"homepage":"https://www.npmjs.com/package/haritorax-interpreter","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/JovannMC.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-03-04T13:40:13.000Z","updated_at":"2025-10-27T15:00:54.000Z","dependencies_parsed_at":"2024-03-04T16:45:20.068Z","dependency_job_id":"f3ed5bd1-8e60-45b9-9d10-ad28342329f6","html_url":"https://github.com/JovannMC/haritorax-interpreter","commit_stats":null,"previous_names":["jovannmc/haritorax-interpreter"],"tags_count":55,"template":false,"template_full_name":null,"purl":"pkg:github/JovannMC/haritorax-interpreter","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JovannMC%2Fharitorax-interpreter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JovannMC%2Fharitorax-interpreter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JovannMC%2Fharitorax-interpreter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JovannMC%2Fharitorax-interpreter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JovannMC","download_url":"https://codeload.github.com/JovannMC/haritorax-interpreter/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JovannMC%2Fharitorax-interpreter/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32528390,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-02T01:12:54.858Z","status":"online","status_checked_at":"2026-05-02T02:00:05.923Z","response_time":132,"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":["fbt","full-body-tracking","haritora","haritorax","node","nodejs","npm","shiftall","virtual-reality","vr"],"created_at":"2025-02-22T09:06:58.543Z","updated_at":"2026-05-02T08:34:50.697Z","avatar_url":"https://github.com/JovannMC.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# HaritoraX Interpreter\n\n![Showcase of the package output with debug logs on, showing the data such as tracker settings, info, and interpreted IMU data via the GX6 dongle](showcase.png)\n\nA node.js package that enables communication with the HaritoraX FBT trackers to read/write data to the trackers. No HaritoraConfigurator / VR Manager software needed (mostly)!\n\nCheck out the Haritora-GX(6/2) proof-of-concept repository here: https://github.com/JovannMC/haritora-gx-poc\n\n## Installation\n\n`npm install haritorax-interpreter`\n\n## Documentation\n\nWill write actual documentation at some point, for now refer to the source code, examples, and JSDoc comments. You may also see how it's used in [SlimeTora](https://github.com/OCSYT/SlimeTora)!\n\n## Linux-specific instructions\n\nFor Linux users, you (or your users) need to do some setup depending on the connection mode so the package can communicate with the trackers:\n\n### Bluetooth Classic (SPP)/COM/Serial port\n\n- Run the following commands in your terminal:\n  - `sudo usermod -a -G dialout $USER`\n  - `sudo usermod -a -G uucp $USER` (for Arch-based distros)\n- Restart your computer\n\n### Bluetooth (LE)\n\n\u003e See https://github.com/chrvadala/node-ble/tree/main?tab=readme-ov-file#provide-permissions for more info\n\n- Run the following command:\n  - This creates a DBus config that will allow the interpreter to access your BLE devices\n  - You may need to change `__USERID__` if it couldn't detect your user\n\n```\necho '\u003c!DOCTYPE busconfig PUBLIC \"-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN\"\n  \"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd\"\u003e\n\u003cbusconfig\u003e\n  \u003cpolicy user=\"__USERID__\"\u003e\n   \u003callow own=\"org.bluez\"/\u003e\n    \u003callow send_destination=\"org.bluez\"/\u003e\n    \u003callow send_interface=\"org.bluez.GattCharacteristic1\"/\u003e\n    \u003callow send_interface=\"org.bluez.GattDescriptor1\"/\u003e\n    \u003callow send_interface=\"org.freedesktop.DBus.ObjectManager\"/\u003e\n    \u003callow send_interface=\"org.freedesktop.DBus.Properties\"/\u003e\n  \u003c/policy\u003e\n\u003c/busconfig\u003e' | sed \"s/__USERID__/$(id -un)/\" | sudo tee /etc/dbus-1/system.d/node-ble.conf \u003e /dev/null\n```\n\n- Restart your computer\n\n## Supported devices\n\n| Device             | Supported | Elbow/Hip support | Additional trackers | Extensions |\n|--------------------|-----------|-------------------|---------------------|------------|\n| HaritoraX 2        |     Y     |         Y         |         Y           |     Y      |\n| HaritoraX Wireless |     Y     |         Y         |         Y           |     N      |\n| HaritoraX 1.1B     |     Y     |         Y         |         N           |     N      |\n| HaritoraX 1.1      |     Y     |         Y         |         N           |     N      |\n| HaritoraX 1.0      |     Y     |         Y         |         N           |     N      |\n| Haritora           |     ?     |         ?         |         N           |     N      |\n\n| Communication mode        | Supported |\n|---------------------------|-----------|\n| Bluetooth (Low Energy)    |     Y     |\n| Bluetooth Classic (serial)|     Y     |\n| GX6 Communication Dongle  |     Y     |\n| GX2 Communication Dongle  |     Y     |\n\n## Example\n```js\nimport { HaritoraX } from \"haritorax-interpreter\";\n\n// connect to haritorax wireless, enable debug logs, allow printing of processIMUData() logs (lots of spam), print raw unprocessed data (more spam!)\nlet device = new HaritoraX(\"wireless\", true, true, true);\n// start connecting to dongles via GX dongles (COM connection), with the ports COM4, COM5, COM6, and COM7\ndevice.startConnection(\"com\", [\"COM4\", \"COM5\", \"COM6\", \"COM7\"]);\n\ndevice.on(\"imu\", (trackerName, rotation, gravity, ankle) =\u003e {\n    // IMU data received, do stuff\n});\n\nsetTimeout(() =\u003e {\n    // apply the following settings to the rightAnkle tracker:\n    // sensor mode: 1 (magnetometer enabled)\n    // posture data transfer rate: 100FPS\n    // sensor auto correction mode: accelerometer and gyroscope\n    // ankle motion detection: enabled\n    device.setTrackerSettings(\"rightAnkle\", 1, 100, ['accel', 'gyro'], true);\n}, 2000)\n\nsetTimeout(() =\u003e {\n    device.stopConnection(\"com\");\n}, 10000)\n```\n\n## Projects using package\n\n- [SlimeTora](https://github.com/OCSYT/SlimeTora) - A program that connects any of the HaritoraX trackers to the SlimeVR server, supporting Bluetooth (classic), Bluetooth (low energy), and the GX(6/2) communication dongles for all the HaritoraX tracker models!\n\nLet me know if you want to be featured here, if you are using this package in any project!\n\n## License\n\nThis package is licensed under the [MIT](https://opensource.org/license/mit/) License - see the [LICENSE](LICENSE) file for details.\n\n## Acknowledgements\n\n- [SlimeTora](https://github.com/OCSYT/SlimeTora/) - BracketProto - original inspiration for project, code for turning gravity into acceleration values\n- [SlimeVR](https://github.com/SlimeVR) - SlimeVR contributors - the inspiration for SlimeTora, which then inspired this project\n- [haritorax-slimevr-bridge](https://github.com/sim1222/haritorax-slimevr-bridge) - sim1222 - math for decoding the IMU packet data\n- [Shiftall Discord](https://discord.gg/vqXmAFy5RC) - community - helping with testing the package (via [SlimeTora](https://github.com/OCSYT/SlimeTora/))\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjovannmc%2Fharitorax-interpreter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjovannmc%2Fharitorax-interpreter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjovannmc%2Fharitorax-interpreter/lists"}