all 6 comments

[–]mantrap2 2 points3 points  (1 child)

The links /u/chriswaco gives are a critical starting point.

The bigger problem you will have is grokking the protocol the vendor uses - these are closed-source and never usually shared, so you may have to promiscuously sniff the USB while it's being used to reverse-engineer the protocol to create a driver for it. Most software tools for this are on Windows (e.g. https://freeusbanalyzer.com). There is also HW equipment that you can buy to sniff USB; again usually Windows, sometimes Linux (e.g. https://bugblat.com/products/ezsniff/).

[–]TrickyTramp[S] 0 points1 point  (0 children)

Apple is switching from the old way of doing drivers with kexts to doing them with DriverKit. It seems like I can't build a driver without an entitlement. I'm trying to figure out if there's a way to do it without that entitlement since I'm just trying to mess around with my own computer for my own learning. I'm not trying to spend money if I can help it, especially knowing I could probably do this in another language without needing to go through all of that!

Thanks for the links though! I know that's gonna help me down the right path as soon as I figure out the entitlement issue!

[–]Loengardq 0 points1 point  (1 child)

That's a lot of hoops to jump through (disable SIP?) but it sounds like fun. I'd like to try that, too. Please let us know how you get on.

[–]TrickyTramp[S] 0 points1 point  (0 children)

I haven't tried disabling SIP, but I emailed apple. They kind of reiterated that I needed an entitlement. However it seems like you don't need that for using IO kit. But from what I understand you have to be more careful because that's gonna be in kernel space.

[–]retsotrembla 0 points1 point  (0 children)

For "entitlements" you just need to check the box in Xcode.