{"id":26932752,"url":"https://github.com/jdibenes/marcus","last_synced_at":"2026-05-01T12:31:45.774Z","repository":{"id":172901222,"uuid":"644919486","full_name":"jdibenes/marcus","owner":"jdibenes","description":"Interactive Rubik's Cube Solver for HoloLens 2.","archived":false,"fork":false,"pushed_at":"2025-01-04T22:55:04.000Z","size":28138,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-26T14:42:54.668Z","etag":null,"topics":["augmented-reality","csharp","guidance","hololens2","python","rubiks-cube","unity"],"latest_commit_sha":null,"homepage":"","language":"Python","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/jdibenes.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}},"created_at":"2023-05-24T14:23:20.000Z","updated_at":"2025-01-04T22:41:24.000Z","dependencies_parsed_at":null,"dependency_job_id":"6143e3a2-e3ee-4a66-9a15-820c48befb2b","html_url":"https://github.com/jdibenes/marcus","commit_stats":null,"previous_names":["jdibenes/marcus"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/jdibenes/marcus","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jdibenes%2Fmarcus","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jdibenes%2Fmarcus/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jdibenes%2Fmarcus/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jdibenes%2Fmarcus/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jdibenes","download_url":"https://codeload.github.com/jdibenes/marcus/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jdibenes%2Fmarcus/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32497810,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-30T13:12:12.517Z","status":"online","status_checked_at":"2026-05-01T02:00:05.856Z","response_time":64,"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":["augmented-reality","csharp","guidance","hololens2","python","rubiks-cube","unity"],"created_at":"2025-04-02T08:28:07.856Z","updated_at":"2026-05-01T12:31:45.746Z","avatar_url":"https://github.com/jdibenes.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MARCuS: Milly Augmented Reality Cube Solver\n\nHoloLens 2 Rubik's cube guide.\nThe guide consists of a **Python client script that runs on a desktop machine** (Tested on Windows 10 and Ubuntu 22.04) and a **Unity server application that runs on the HoloLens**.\nReal-time video streaming and server-client communications enabled by [hl2ss](https://github.com/jdibenes/hl2ss).\nOnly 3x3x3 cubes are supported.\n\n**Demo:** https://youtu.be/iQYMZVgmVAc\n\n## Preparation\n\nBefore using the server software configure your HoloLens as follows:\n\n1. Enable developer mode: Settings -\u003e Update \u0026 Security -\u003e For developers -\u003e Use developer features.\n2. Enable device portal: Settings -\u003e Update \u0026 Security -\u003e For developers -\u003e Device Portal.\n3. Enable research mode: Refer to the Enabling Research Mode section in [HoloLens Research Mode](https://docs.microsoft.com/en-us/windows/mixed-reality/develop/advanced-concepts/research-mode).\n\nPlease note that **enabling Research Mode on the HoloLens increases battery usage**.\n\n## Installation (sideloading)\n\nThe server application is distributed as a single appxbundle file and can be installed using one of the two following methods.\n\n**Method 1**\n\n1. On your HoloLens, open Microsoft Edge and navigate to this repository.\n2. Download the [latest appxbundle](https://github.com/jdibenes/marcus/releases).\n3. Open the appxbundle and tap Install.\n\n**Method 2**\n\n1. Download the [latest appxbundle](https://github.com/jdibenes/marcus/releases).\n2. Go to the Device Portal (type the IP address of your HoloLens in the address bar of your preferred web browser) and upload the appxbundle to the HoloLens (System -\u003e File explorer -\u003e Downloads).\n3. On your HoloLens, open the File Explorer and locate the appxbundle. Tap the appxbundle file to open the installer and tap Install.\n\nYou can find the server application (PTG Rubiks) in the All apps list.\n\n## Permissions\n\nThe first time the server runs it will ask for the necessary permissions to access sensor data. If there are any issues please verify that the server application (PTG Rubiks.exe) has access to:\n\n- Camera (Settings -\u003e Privacy -\u003e Camera).\n- Eye tracker (Settings -\u003e Privacy -\u003e Eye tracker).\n- Microphone (Settings -\u003e Privacy -\u003e Microphone).\n- User movements (Settings -\u003e Privacy -\u003e User movements).\n\n## Using the software\n\nInstall the required Python packages and then:\n\n1. Run the server application on your HoloLens.\n2. Set the host variable of the [client.py](https://github.com/jdibenes/marcus/blob/main/guide/client.py) script to your HoloLens IP address.\n3. Run [client.py](https://github.com/jdibenes/marcus/blob/main/guide/client.py).\n4. Follow the instructions displayed on your HoloLens.\n\n**Required Python packages**\n\n- [OpenCV](https://github.com/opencv/opencv-python) `pip install opencv-python`\n- [Open3D](http://www.open3d.org/) `pip install open3d`\n- [PyAV](https://github.com/PyAV-Org/PyAV) `pip install av`\n- [NumPy](https://numpy.org/) `pip install numpy`\n- [Websockets](https://github.com/aaugustin/websockets) `pip install websockets`\n- [skimage](https://scikit-image.org/docs/stable/install.html)\n- [kociemba](https://github.com/muodov/kociemba) `pip install kociemba`\n\n## Build and run the Unity server application\n\nThe server application was developed in Unity 2020.3.42f1.\n\n1. Open the [project](https://github.com/jdibenes/marcus/tree/main/ptg_rubiks) in Unity. If the MRTK Project Configurator window pops up just close it.\n2. Go to Build Settings (File -\u003e Build Settings).\n3. Switch to Universal Windows Platform.\n4. Set Target Device to HoloLens.\n5. Set Architecture to ARM64.\n6. Set Build and Run on Remote Device (via Device Portal).\n7. Set Device Portal Address to your HoloLens IP address (e.g., https://192.168.1.7) and set your Device Portal Username and Password.\n8. Click Build and Run. Unity may ask for a Build folder. You can create a new one named Build.\n\n## References\n\n- https://github.com/microsoft/HoloLens2ForCV\n- https://github.com/dwalton76/rubiks-cube-tracker\n- https://github.com/kkoomen/qbr\n- https://github.com/shameempk/pyciede2000\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjdibenes%2Fmarcus","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjdibenes%2Fmarcus","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjdibenes%2Fmarcus/lists"}