Post

Replies

Boosts

Views

Activity

Reply to Entitlements for VMWare et al access to access USB devices
@eskimo , you said above that "The entitlements required to do this are available to all developers for development". I have not been able to figure out how to do that on iPadOS. (I believe that) iPadOS apps need to be signed and provisions provided and entitlements granted. It is possible to develop software for iPadOS that does not require Apple to grant entitlement for a specific USB device (to associate with a DEXT)? Or is there another approach? Or am I not understanding correctly? Thanks!!! Gene
Feb ’24
Reply to Entitlements for VMWare et al access to access USB devices
@BenjaminApple and @eskimo , IOUSBHost seems to be a part of Driver kit (i.e. also exists in iPadOS on an M processor). Is there something I can read that will explain how USB access should work on iPadOS ? I think I also read that the driver kit includes portions of IOKit and this has me further confused as to what should work and what should not work. Thanks for helping me steer through this
Feb ’24
Reply to Difficulty debugging a Provisioning problem
@eskimo , I am becoming convinced that Apple does not want user developed software to interface with the USB-C bus unless it is for a specific device. I also saw that there is a libUSBCfwflash library which seems, on the surface, to be a bit hypocritical of Apple. I am impressed by Apple’s hardware and many of the apps but truly discouraged when it comes to using it with the USB interface. I don’t understand why reading and writing to a USB device from user space should be limited or why Apple doesn’t give an option to disable that part of the Sandbox, like they do in OSX. The IOKit calls used in libUSB that I looked into exist in iPadOS but they are blocked from user access. The current RTL-SDR driver software supports about 30 different combinations of Device ID and Product ID. DriverKit isn’t broken but the entitlement process seems to be. Thanks for all of your help, @eskimo. I appreciate your support! Gene
Jan ’24
Reply to iPadOS, IOKit and Sandbox/MACF
@ssmith_c , I think, for the iPad, it isn't possible to compile it to run locally without entitlements. The DEXT loading mechanism needs a way to match the Vendor and Product IDs and the only way I know of to do that is to have them in the entitlements (on an iPad). Is this incorrect?
Jan ’24
Reply to Difficulty debugging a Provisioning problem
My wild guess is that there are probably about 100 different radio receivers with USB interfaces and unique hardware ids that are available for purchase. The one that I bought has a Realtek USB tuner chip inside of it (idVendor=0x0bda, idProduct=0x2838). Folks that develop software defined receiver apps (SDRs) typically write the software that does the radio receiver math and the presentation and user interface graphics and rely on other teams to create device drivers that interface to specific hardware. (There is even a GNU Radio project that allows users to create software defined radios using pre-defined building blocks connected by a graph.) The M1 and M2 iPads have more than the necessary CPU and graphics performance that a portable SDR solution requires. I also am curious about the neural processor and it's potential use for signal processing.
Jan ’24
Reply to Difficulty debugging a Provisioning problem
@eskimo , I made progress, but I don't understand what it means :-) When I remove specific Vendor IDs from the DEXT's entitlement file, the DEXT loads. idVendor="*" also loads the DEXT successfully. I need your advice. Device drivers written for my specific receiver (and many others) have been written for Windows, Linux and OSX. The linux and OSX drivers call libUSB. I have compiled a version of libUSB for iPadOS. "Sandbox" in iPadOS denies access to the USB device. I don't know how to temporarily disable Sandbox (I suspect it isn 't possible for me) When I requested entitlements from Apple so that I could try to create a driver, Apple denied my request. Does this imply that iPadOS, even with DriverKit really isn't a viable platform for software which can communicate with many different USB devices?
Jan ’24
Reply to Difficulty debugging a Provisioning problem
@eskimo , I have tried everything that you suggested. No success so far. I get this log entry (from the iPad) Received termination request from [osservice<com.apple.mobile.installd>:411] on <RBSProcessPredicate <RBSProcessBundleIdentifierPredicate "w1ebr.MUUIipadOS">> with context <RBSTerminateContext| explanation:installd terminating bundleID:w1ebr.MUUIipadOS reportType:None maxTerminationResistance:Interactive attrs:[ <RBSPreventLaunchLimitation| <RBSProcessPredicate <RBSProcessBundleIdentifierPredicate "w1ebr.MUUIipadOS">> allow:(null)> ]> Does this tell you anything helpful?
Jan ’24
Reply to Difficulty debugging a Provisioning problem
@eskimo , how do I install Apps on my iPad using Finder on my Mac? Installing using the "Simulators and Devices" menu gives me the same error about not being able to install the app Error installing '/Users/gene/Desktop/USBApp.app', ERROR: Error Domain=com.apple.dt.CoreDeviceError Code=3002 "Failed to install the app on the device." UserInfo={NSUnderlyingError=0x60000b2cc510 {Error Domain=IXUserPresentableErrorDomain Code=14 "Unable to Install “USBApp”" UserInfo={NSUnderlyingError=0x60000b2cc480 {Error Domain=MIInstallerErrorDomain Code=13 "Failed to verify code signature of /var/installd/Library/Caches/com.apple.mobile.installd.staging/temp.769olK/extracted/USBApp.app/SystemExtensions/w1ebr.MUUI.ipadOS.driver.dext : 0xe8008015 (A valid provisioning profile for this executable was not found.)" UserInfo={FunctionName=+[MICodeSigningVerifier _validateSignatureAndCopyInfoForURL:withOptions:error:], LegacyErrorString=ApplicationVerificationFailed, SourceFileLine=78, LibMISErrorNumber=-402620395, NSLocalizedDescription=Failed to verify code signature of /var/installd/Library/Caches/com.apple.mobile.installd.staging/temp.769olK/extracted/USBApp.app/SystemExtensions/w1ebr.MUUI.ipadOS.driver.dext : 0xe8008015 (A valid provisioning profile for this executable was not found.)}}, NSLocalizedDescription=Unable to Install “USBApp”, NSLocalizedRecoverySuggestion=Failed to verify code signature of /var/installd/Library/Caches/com.apple.mobile.installd.staging/temp.769olK/extracted/USBApp.app/SystemExtensions/w1ebr.MUUI.ipadOS.driver.dext : 0xe8008015 (A valid provisioning profile for this executable was not found.), NSLocalizedFailureReason=This app cannot be installed because its integrity could not be verified.}}, NSURL=file:///Users/gene/Desktop/USBApp.app/, NSLocalizedDescription=Failed to install the app on the device.} Domain: com.apple.dt.DVTCoreDevice Code: -1 User Info: { DVTErrorCreationDateKey = "2024-01-11 21:29:30 +0000"; } -- System Information macOS Version 14.3 (Build 23D5051b) Xcode 15.0.1 (22266) (Build 15A507) Timestamp: 2024-01-11T16:29:30-05:00
Jan ’24
Reply to iPadOS, IOKit and Sandbox/MACF
@ssmith_c , I have a version of libUSB that I have compiled for iOS which uses the methods in IOKit in iPadOS. I can access some of the information from the device attached to the USB-C connector but not all of it. Sandbox denies some of the accesses but not all of them. If it could be made to work, then porting a software defined radio application , in theory, should be possible. If there is no way to make it work I would need a bridge between calls to libUSB and calls to DriverKit, and I know that would not be possible for me at the present based on what I don’t know. Gene
Jan ’24