New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
M1 support? #135
Comments
In my testing of M1 MacBook Air HoRNDIS does not support M1 Macs right now. |
I can build it for Apple M1, but I don't know how to sign it. 'Kext signature validation error code -67050' |
DJI Assistant software depends on this kext, so even though I don't need Android tethering per se, I can't use the software to access files from my drone. Will love to see a fix, too |
I don't think it's working in M1, not atleast in my Mac Mini M1. I get "Incompatible architecture: Binary is for x86_64, but needed arch arm64e". Did somebody manage to install a version on the new mac mini? |
Kind of crazy that Android USB connections rely on this open-source project. Google or Apple should have their own 1st part solution. |
same issue here. I can compile from Xcode, but failed to load it because of signing errors. ➜ horndis git:(master) ✗ brew install --cask horndis Updating Homebrew... For more information, refer to vendor documentation or this Apple Technical Note: Error: macOS El Capitan, Sierra, High Sierra or Mojave is required for this software. |
I succeed without kext signing on M1 ( For Korean, check this page below ) Open terminal in recovery mode, type after, reboot build kext, paste to Library/Extensions and repair permission and install(open terminal and type) after, open settings-security, and install button will be added. Done! |
Somebody Have an KEXT sign-able Apple developer account? |
When I try to do kextload -t ..... it appears the next text. Executing: /usr/bin/kmutil load -p /Library/Extensions/horndis.kext |
You should build that code for Universal(x64, arm64e) in Xcode. |
Hello there, thanks for your instructions, are they working fine for you? I tried to follow your step again and again but I couldn't get it done (I'm struggling with the cloning and building passages, in particular) I'm sorry if this post it's inappropriate, it's my first one here on GitHub. |
@dave-moriarti the Korean website has a build that you can use- no need to build it yourself (I think)! |
@tvqt Thank you for your response! Already tried to, but failed. Can't understand what i'm doing wrong, i followed the steps in the Korean site but i'm probably missing something |
@dave-moriarti the process for me was:
sudo chown -R root:wheel /Library/Extensions/horndis.kext it came up with a pop-up, saying I needed to changed the security settings in recovery to run the extension, so It was a bit of an ordeal 😅 |
@tvqt Thank you for being so helpful! I did everything as described, sudo kextload -t /Library/Extensions/horndis.kext I get no pop-up but this message from terminal: Notice: -print-diagnostics (-t) ignored; use kextutil(8) to test kexts. And this is the point where I get stucked... Any idea? |
@dave-moriarti I had a bit of a search around the internet, and the error code seems to indicate that kmutil cannot find a part of the kext, the plist file. A few things I would try, to troubleshoot it:
let me know if any of this helps! |
@tvqt (and @chaealarm) authenticate-root was enabled and so was Safe Startup option. I followed your steps and I tried everything again with this configuration: a. I'm running MacOS with Reduced Security option flagged from Startup Security Utility (underneath boxes both checked) When i run the three command lines:
Notice: -print-diagnostics (-t) ignored; use kextutil(8) to test kexts. At this point I ran kextutil as suggested: 4.kextutil /Library/Extensions/horndis.kext --> You must be running as root to load kexts or send personalities into the kernel. Executing: /usr/bin/kmutil load --bundle-path /Library/Extensions/horndis.kext I also noted that other users up in this thread had same error code Error Domain=KMErrorDomain Code=71 but different specification: Incompatible architecture: Binary is for x86_64, but needed arch arm64e" UserInfo={NSLocalizedDescription=Incompatible architecture: Binary is for x86_64, but needed arch arm64e} At this point is it possible that the korean file isn't working properly? It's like the kext file is missing some part I guess. |
********* Update: SOLVED (in the most stupid and nonsense way). But I'm not sure of what i've actually done. Having excluded every other problem I insisted with working on the korean kext. I tried unzipping it multiple times with different programs but the problem was still there, until I accidentally unzipped the archive in a folder were there was already the extracted kext file . MacOS default unzipper found that there was already a file with that name in the folder, and renamed it "horndis.kext 2". Adding the 2 to the extension made the finder not recognising it as a .kext and instead showed it as a folder . Opening the folder, there was the .plist file that @tvqt mentioned and that was missing, causing the Error 71 when trying to load the kext from terminal. I copied the entire folder in /Library/Extensions and renamed it "HoRNDIS.kext", system asked to conferm extension change. It now appeared as a brick again. And it was infact identical to the previous kext. But when I hopelessly tried to run the 3 command lines again, it installed successfully! I don't know exactly what happened. Maybe changing the file extension kinda forced a sort of extension's internal indexing and allowed the extension to find the .plist, but I am just guessing. I'm writing everything here so that noobs like me struggling with the installation know what worked for me. Thanks everyone, now my Macbook M1 can browse the internet via Android USB Tethering! P.S. It's surprising that Apple didn't take care of a feature so easy for them to add. Thank god the internet community exist! |
glad I could help 😊 |
Hi, another M1 user here. Can indeed confirm that the kext from the Korean site works, but this installation required some back and forth with restarting and calling Saved me from high-latency death with bluetooth tethering 🥇 |
I'm tethering trough a type-c to usb-a cable, with apple usb-a to usb-c adapter, and it works just fine |
For those of you who want to get this up and running for Big Sur, I have crudely modified the MakeFile and xcode project to make a pkg file that will work on M1 and most likely Intel Big Sur (I haven't tested Intel). First step is to allow unsigned kext's to be loaded on your M1 Mac. to do that with a Macbook, power on the laptop holding the power button until it loads the options window. Should show your SSD, and a Options that has a setup icon on it. Select that. Then it will most likely have you select a user. Select one, and enter the password. This is so it unlocks the Drive. Then in the menu bar after that, under Utilities, select Terminal. then type in After that, clone this from my repo. To see if it worked, open a terminal, and run
After doing this, my DJI Assistant 2 For Mavic works with my Air 2 now :) |
the link from the @chaealarm's comment:
link is here: https://itap.tistory.com/2 |
Is there any way to use this without disable csrutil? Cause that will make sideload app not openable... |
There doesn't appear to be good documentation online about this- you can try experimenting with using things like csrutil enable --without kext, and seeing if they work- anecdotally, it seems like any non-default SIP configuration (i.e. disabling it, or disabling certain parts of it) would appear to make MacOS block sideloading (but you're welcome to try- no guarantees of anything) |
do you have an M1 Mac? "Binary is for arm64e, but needed arch x86_64" seems to indicate you have an x86-based CPU |
Hello everyone, I'm uploading my M1 binary so that other people don't have to install Xcode on their 256GB mac ;) Installation steps
|
Here’s how you get HoRNDIS operations on: turn off: — Shut Down… Boot into recovery by pressing power button for more than 9 seconds download the Korean patch: https://blog.kakaocdn.net/dn/nRMG3/btqZkqGNzgR/U1XLxka8DvDA5zgx4X1yY0/HoRNDIS.kext.zip?attach=1&knm=tfile.zip kmutil load --bundle-path /Library/Extensions/HoRNDIS.kext test HoRNDIS: status in Terminal as root: |
@jwise can you please look into this issue? we really need this project to support M1 |
This is sad. Mine is personal developer account as well. I didn't know that personal developer can't sign kext. :( |
I just built PCB Design that support ethernet tethering between Android-Apple Silicon Mac. |
thank you thank you thank you! |
Can anyone (verified developer) just sign the the build? I know it works but disabling kext protection totally on macos isn't secure. Here's my build for m1 mac. |
Awesome! It may be cheaper to just get 2 of these: https://www.amazon.com/Ethernet-Adapter-ABLEWE-Network-Compatible/dp/B0837QGZMY and put a Ethernet cable together, as that is basically what you did on the hardware level... But your setup also charges the phone at the same time right? |
That's right. Using cheap pcb manufacturer(like JLCPCB), might be cheaper than buying 2 of USB Ethernet adapter. |
Epic. Thanks! |
Hi @jwise , why don't you enable "Sponsor this project" so everyone can donate/sponsor it? In a few days you will be gettin a new mac just from it. |
Thank you for this. For anyone who has purchased DJI FPV Goggles V2 and running M1 Mac with macOS Monterey. This solution worked for me and managed to update my Goggles to the latest firmware. I confirm successful update as of 15 August 2022. I ran this on the Mac not Windows, even after DJI Assistant download states its not working, it worked with this solution. Thanks again. |
Big thanks! is working flawless in my Macbook Pro M1 Pro with Monterey. I have a few questions, maybe someone can help me. Since I did this, I cant open iPad Apps in my mac, I think is because kext are disabled in my system? If so, is there a way to re-enable the kexts on my computer and how? Also, if I re-enable the kexts I will lost the Horndis connection or will stay working? I want to use horndis and also my ipad apps if possible. Thanks! |
Hmm, can I actually load a custom system extension with kext enabled aka can I sign my own modules so I can actually keep it enabled? |
Bump. MacOS 12.5.1 (M1) |
This is very helpful for me. Thanks. I have tested this on M1 (MacOS Ventura). https://support.apple.com/guide/security/startup-disk-security-policy-control-sec7d92dc49f/web This article is helpful for me to enable the HoRNDIS. [Summary] Step.1. run "crsutil disable" then reboot. (in recovery mode) |
I can confirm this solution still works when updating your DJI Goggles V2 to latest firmware ending .0607 running Mac OS 13 on M1 MacBook Pro Thanks again Brian for this download, much appreciated. |
Any ideas as to how to get this WITHOUT running crsutil disable? |
Run what you need to update and once you have updated go back into recovery mode and turn the SIP settings back to default. |
Huh? I don't want to disable it to begin with. |
Can you explain why it needs a verified developer to sign it? |
If it's signed by a verified developer, then you don't have to Disable SIP for kernel extensions in macOS when you tried to install it. |
ATTENTION M1/M2 USERS ON OS VENTURA There is a new set of instructions to follow if you want to make this work given the layout of some things has changed.
Let me know if this works for anyone else. There is some better terminology I'm sure I could have used but someone can refine this list if they like haha. |
Just tried it today, and this just solved my issue. Thanks for uploading this. After 3 hours, I am finally able to connect my DJI Mini 3 Pro to DJI Assistant 2 (Consumer Drones) and calibrate it. |
This one also worked for me. |
Работает на чипе M2! СПАСИБО!!! |
我执行:sudo kextload -t /Library/Extensions/horndis.kext 的时候报下面的错: 有人遇到过吗? Notice: -print-diagnostics (-t) ignored; use kextutil(8) to test kexts. Authenticating extension failed: Bad code signature" UserInfo={NSLocalizedDescription=Authenticating extension failed: Kext com.joshuawise.kexts.HoRNDIS v9.2 in executable kext bundle com.joshuawise.kexts.HoRNDIS at /private/var/db/KernelExtensionManagement/Staging/com.joshuawise.kexts.HoRNDIS.3F64G1/HoRNDIS.kext: Authenticating extension failed: Bad code signature} |
至少要把SIP的Kext关了,步骤上面说的很清楚了 |
No description provided.
The text was updated successfully, but these errors were encountered: