{"id":20120405,"url":"https://github.com/asahilinux/macvdmtool","last_synced_at":"2025-04-07T06:09:45.553Z","repository":{"id":42534128,"uuid":"335392047","full_name":"AsahiLinux/macvdmtool","owner":"AsahiLinux","description":"Apple Silicon to Apple Silicon VDM utility","archived":false,"fork":false,"pushed_at":"2024-06-14T01:12:02.000Z","size":14,"stargazers_count":271,"open_issues_count":9,"forks_count":42,"subscribers_count":21,"default_branch":"main","last_synced_at":"2025-04-06T01:15:25.735Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C++","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/AsahiLinux.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":"2021-02-02T18:54:31.000Z","updated_at":"2025-04-04T02:20:48.000Z","dependencies_parsed_at":"2024-08-04T01:08:51.937Z","dependency_job_id":"95739d0c-38cf-41e0-be2d-15d12c47895a","html_url":"https://github.com/AsahiLinux/macvdmtool","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AsahiLinux%2Fmacvdmtool","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AsahiLinux%2Fmacvdmtool/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AsahiLinux%2Fmacvdmtool/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AsahiLinux%2Fmacvdmtool/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AsahiLinux","download_url":"https://codeload.github.com/AsahiLinux/macvdmtool/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247601448,"owners_count":20964864,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":[],"created_at":"2024-11-13T19:19:56.063Z","updated_at":"2025-04-07T06:09:45.531Z","avatar_url":"https://github.com/AsahiLinux.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Apple Silicon to Apple Silicon VDM tool\n\nThis tool lets you get a serial console on an Apple Silicon device and reboot it remotely, using only another Apple Silicon device running macOS and a standard Type C cable.\n\n## Disclaimer\n\nI have no idea what I'm doing with IOKit and CoreFoundation -marcan\n\n## Copyright\n\nThis is based on portions of [ThunderboltPatcher](https://github.com/osy/ThunderboltPatcher) and licensed under Apache-2.0.\n\n* Copyright (C) 2019 osy86. All rights reserved.\n* Copyright (C) 2021 The Asahi Linux Contributors\n\nThanks to t8012.dev and mrarm for assistance with the VDM and Ace2 host interface commands.\n\n## Note about macOS 12\n\nTo have access to the serial console device on macOS Monterey (12), you need to disable the `AppleSerialShim` extension.\n\n**Note:** This requires downgrading the system security and may cause problems with upgrades. Use it at your own risk!\n\nStart by generating a new kernel cache, without the `AppleSerialShim` extension:\n\n```\nsudo kmutil create -n boot -a arm64e -B /Library/KernelCollections/kc.noshim.macho -V release  -k /System/Library/Kernels/kernel.release.\u003csoc\u003e -r /System/Library/Extensions -r /System/Library/DriverExtensions -x $(kmutil inspect -V release --no-header | awk '!/AppleSerialShim/ { print \" -b \"$1; }')\n```\n\nReplace `\u003csoc\u003e` with `t8101` on M1 Macs and `t6000` on M1 Pro/Max Macs. If you’re unsure, `uname -v` and look at the end of the version string (`RELEASE_ARM64_\u003csoc\u003e`).\n\nThen, enter 1TR:\n\n1. Power off your Mac\n2. Press and hold the Power button until the boot menu appears\n3. Select “Options”, then (if necessary) select your macOS volume and enter your administrative password.\n\nSelect Utilities\u003eStartup security and switch the macOS installation to reduced security. Exit Startup security.\n\nSelect Utilities\u003eTerminal and install your custom kernel:\n\n```\nkmutil configure-boot -c /Volume/\u003cvolume\u003e/Library/KernelCollections/kc.noshim.macho -C -v /Volume/\u003cvolume\u003e\n```\n\nReplace `\u003cvolume\u003e` with the name of your boot volume.\n\nYou can now reboot: macOS should start as normal, and the serial device `/dev/cu.debug-console` should be available.\n\nTo revert back to the default kernel, enter 1TR again, access Utilities\u003eStartup security and switch to full or reduced security.\n\n## Building\n\nInstall the XCode commandline tools and type `make`.\n\n## Usage\n\nConnect the two devices via their DFU ports. That's:\n - the rear port on MacBook Air and 13\" MacBook Pro\n - the port next to the MagSafe connector on the 14\" and 16\" MacBook Pro\n - the port nearest to the power plug on Mac Mini\n\nYou need to use a *USB 3.0 compatible* (SuperSpeed) Type C cable. USB 2.0-only cables, including most cables meant for charging, will not work, as they do not have the required pins. Thunderbolt cables work too.\n\nRun it as root (`sudo ./macvdmtool`).\n\n```\nUsage: ./macvdmtool \u003ccommand\u003e\nCommands:\n  serial - enter serial mode on both ends\n  reboot - reboot the target\n  reboot serial - reboot the target and enter serial mode\n  dfu - put the target into DFU mode\n  nop - do nothing\n```\n\nUse `/dev/cu.debug_console` on the local machine as your serial device. To use it with m1n1, `export M1N1DEVICE=/dev/cu.debug-console`.\n\nFor typical development, the command you want to use is `macvdmtool reboot serial`. This will reboot the target, and immediately put it back into serial mode, with the right timing to make it work.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fasahilinux%2Fmacvdmtool","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fasahilinux%2Fmacvdmtool","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fasahilinux%2Fmacvdmtool/lists"}