I am developing a USB networking accessory using the CDC ECM or NCM protocol and I would like to know what are the MacOS and iPadOS requirements to connect to such a device.
I have a prototype CDC ECM device developed that uses static IPv4 addressing which I can connect to an Arch Linux host and ping, but I am unable to have the same success from my Mac Studio M1 running Sequoia 15.1.1. The device shows up under 'Other Services' with 'Not connected' status, whether I leave it with the default settings or change it to 'Configure IPv4 -> Manually' and then set the appropriate IP address / Subnet mask / Router.
From a discussion on Github, it seems that the ECM device must support NetworkConnection notification in order to work with MacOS. Can you point me to where this is documented and whether there are other expectations/requirements around USB network adapters?
My end goal is to make an embedded device that communicates to MacOS and iPadOS devices/apps over USB CDC NCM with a simple UDP socket listener.
Thank you in advance for any help you can provide.
NetworkingDriverKit
RSS for tagDevelop drivers for USB Ethernet adapters using NetworkingDriverKit.
Posts under NetworkingDriverKit tag
7 Posts
Sort by:
Post
Replies
Boosts
Views
Activity
PLATFORM AND VERSION
iOS
Development environment: Xcode 15.4, macOS Sonoma 14.5
Run-time configuration: macOS Sonoma 14.5
DESCRIPTION OF PROBLEM
Hi, I'm on DriverKit 21.0. I'm looking for a system call (that isn't deprecated) in my driver to set the Ethernet link speed manually. Normally a user would set it by System Settings... -> Network -> -> Details -> Hardware -> Configure (Manually), and then Speed (choose the link speed). With my driver, when I configure for manual, no link speeds show up. I want to know how to populate the speeds (1000BaseT, etc.) so a user can select one. What system APIs are used for this? I can't find much detail in the documentation. I do see Instance Methods for some related things like getSupportedMediaArray, but most of these newer methods don't have details in the documentation to guide me on what they actually do. Thanks in advance...
I was seeing APNS traffic not honor the networking routing table and instead forced onto a specific interface starting in the beta releases of macOS Sequoia.
I wanted to ask here to see if it was by design. Were there any release notes or communication in regards to this change?
I can imagine it being an intentional fix for some issue that Apple customers ran into, but I can also imagine this could be unintentional or a bug, so I wanted to double check.
Thank you
Hi,
I'm trying to test "https://developer.apple.com/documentation/networkingdriverkit/connecting_a_network_driver" on MacBook Pro M3 with 14.5 Sonoma, XCode 15.4, SIP is disabled.
Build steps are succesful, after running App, "Install Dext" is succesful, there is no error in XCode; "systemextensionctl list" show a record for "com.apple.system_extension.driver_extension" with [ activated enabled ] tag.
But, "ioreg" doesn't show any service for the dext; and no new interface with name "enXX" appears in System Settings in contrast to what the document describes. In addition, seldomly my device experiences crash when the dext remains installed where crash report points "IOReg" function.
I tried also Driver Kit Sample ( https://developer.apple.com/documentation/driverkit/driverkit_sample_code ) and a github project based on this sample having last commits 9 months ago. However, Dext installation reveals similar behavior and "Communicate with Dext" step is unsuccessful with the message "Driver is not connected".
Is there an updated version of Networking Driver Kit documentation to reach a running sample app for Sonoma 14.5?
Thanks.
Hi,
I'm trying to test the NetworkingDriverKitSampleApp at https://developer.apple.com/documentation/networkingdriverkit/connecting_a_network_driver for a while but I couldn't reach the final steps described in the documentation.
My setup: Xcode 15.4, MacBook Pro M3 with Sonoma 14.5, SIP is disabled.
I prepared the required provisinning profiles with required entitelements.
Dext and app builds successfully. Build path starts with "/Applications".
"Install Dext" operation is successful without any error after allowing necessary permission.
However, neither System Settings shows any new enXX interface, nor ioreg command shows a registered service while "systemextensionctl list" shows the expected result as a com.apple.system_extension.driver_extension record with [ activated enabled ].
I repeated the same steps for "Driver Kit Sample" at https://developer.apple.com/documentation/driverkit/driverkit_sample_code, "Install Dext" step succesful but "Communicate With Dext" results in "Driver is not connected" message. Similar to previous project, ioreg doesn't show any service for the dext while systemextensionctl lists [activeted enabled]. I also test an updated version of DriverKitSample at https://github.com/DanBurkhardt/DriverKitUserClientSample, which reproduced the same results.
Finally, my device experiences seldom crashes after passing sleep state when the dext remains installed; where crash report points "IOReg".
Is there any lacking steps on Apple documentation for Sonoma 14.5 or XCode 15.4 versions?
Thanks.
Hi,
I'm responsible for extending my company's Firewall application with MacOS support. The easiest and fastest way requires a simple API similar to netmap/nfq in Unix/Linux systems or NDIS/WinDivert in Windows platform where
All network traffic passing NIC's or WiFi adapter should beforwarded to our FW application,
FW application should process the raw packets with its own connection tracking mechanism, modify them if needed, generate new ones if needed,
FW application should inject forwarded or new packets to continue their ways.
In other words, the required API should stand between NIC/WiFi driver and networking stack and allow packet manipulation. My questions follow:
I can't decide on which method to focus further, throughout three alternatives;
kext - It can satisfy the requirements, but deprecated, difficult to progress and have no guarantee to be applicable in future versions of MacOS, am I right ?
networkingdriverkit - It can satisfy the requirements, am I right ?
networkextension - can it satisfy the requirements? Also there is a serious performance problem as mentioned in https://developer.apple.com/forums/thread/757071.
Can anyone help me to decide on the most proper method for?
Thanks.
The link is as follows:
app store: monitor+
I have checked the header file for USB in the IOKit framework of macOS, but it does not exist in iOS.
Is it necessary to collaborate with Apple to implement functions similar to monitor+(PTP control camera)?