Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

flyproductions

macrumors 65816
Original poster
Jan 17, 2014
1,112
469
As the threadname says:
With my cMP 5,1 i tried to gain access to some old TomTom sportswatch via USB, using some Java app. Manufacturer dropped support. So the original app is not an option anymore.

The app launches fine with terminal command "java -jar TomTomWatch.jar. But as soon as it has launched i keep getting an USB-error...

Code:
ERROR: USB Error: USB error 3: Unable to claim interface: Access denied (insufficient permissions)

...over and over again.

So no acces to the watch possible.

Machine is on Monterey 12.7.6 via OCLP 1.5. Can this be some System Integrity Protection thing solveable with the OCLP-settings? Or are there any other known solutions?

Thanks in advance for any hint how to cure this.
 
As the threadname says:
With my cMP 5,1 i tried to gain access to some old TomTom sportswatch via USB, using some Java app. Manufacturer dropped support. So the original app is not an option anymore.

The app launches fine with terminal command "java -jar TomTomWatch.jar. But as soon as it has launched i keep getting an USB-error...

Code:
ERROR: USB Error: USB error 3: Unable to claim interface: Access denied (insufficient permissions)

...over and over again.

So no acces to the watch possible.

Machine is on Monterey 12.7.6 via OCLP 1.5. Can this be some System Integrity Protection thing solveable with the OCLP-settings? Or are there any other known solutions?

Thanks in advance for any hint how to cure this.

Could you try running an older macOS version in a VM, so the VM app passes the device to the VM, and then the app runs in a supported OS?
 
Another thought, MacPro5,1 have an ancient Intel dual mode USB (OHCI/EHCI), some software that directly access the USB port requires a xHCI or at least a UHCI port to work. This is a problem for some types of hardware, especially if the app bypass Apple API and does some form of bit-banging.

I'd also try a newer Mac.
 
Last edited:
Thanks for your help, both of you!

Forgot to mention: When booted to Windows on the same machine, i can access the watch with the same Java app flawlessly.
 
Thanks for your help, both of you!

Forgot to mention: When booted to Windows on the same machine, i can access the watch with the same Java app flawlessly.

I'd did exactly that to have a USB flash programmer to work, but even with Windows the app is at best flaky because of the MacPro5,1 Intel dual mode USB.

Btw, works fine with a MacPro6,1.
 
I'd did exactly that to have a USB flash programmer to work, but even with Windows the app is at best flaky because of the MacPro5,1 Intel dual mode USB.
Thanks again!

For Windows in this case it works perfectly on the 5,1. The app does not execute very demanding tasks. Mainly downloading workout-sessions of the watch in GPX-format. But it does everything the TomTom-app did before. In some cases even better. Also it can update the firmware, which might be somehow similar to what a programmer does.

The old TomTom app could access the watch without any issues. So one of my thought was some old driver blocking the port for the Java-app.

Here is, what USB Prober shows, if this is of any help:

usb_prober.png

So the watch seems to be "seen", but the Java-app is unable to access it.

Also i tried High Sierra, to exclude OpenCore as a culprit. But there i ran into other problems:
The latest x86 Java for Mac is barely running properly (i. e. Java control panel constantely crashing). And running the app with the watch connected results in another error

Code:
Properties file javax.usb.properties not found.

and then claiming "No valid USB device"

Googeling this error came up with more new questions than answers. So i'm afraid this all is getting a bit beyond my skills.
 
Update: Problem is now solved!

Following some Instructions, i found on this page, i created some dummy-"driver kext", only containing an info.plist file, which, with some minor modifications to whats shown there, lookes like this:

Code:
<?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <!-- This is a dummy driver. It -->
    <!-- contains no actual code; its only purpose is to     -->
    <!-- prevent Apple's USBHID driver from exclusively      -->
    <!-- opening the device.                                 -->
    <plist version="1.0">
    <dict>
        <key>CFBundleDevelopmentRegion</key>
        <string>English</string>
        <key>CFBundleIconFile</key>
        <string></string>
        <key>CFBundleIdentifier</key>
        <string>com.tomtom.driver.dummy</string>
        <key>CFBundleInfoDictionaryVersion</key>
        <string>1.00</string>
        <key>CFBundlePackageType</key>
        <string>KEXT</string>
        <key>CFBundleSignature</key>
        <string>????</string>
        <key>CFBundleVersion</key>
        <string>1.0.0d1</string>
        <key>IOKitPersonalities</key>
        <dict>
            <key>TomTomRunner2</key>
            <dict>
                <key>CFBundleIdentifier</key>
                <string>com.apple.kpi.iokit</string>
                <key>IOClass</key>
                <string>IOService</string>
                <key>IOProviderClass</key>
                <string>IOUSBInterface</string>
                <key>bConfigurationValue</key>
                <integer>1</integer>
                <key>bInterfaceNumber</key>
                <integer>0</integer>
                <key>idProduct</key>
                <integer>0x7477</integer>
                <key>idVendor</key>
                <integer>0x1390</integer>
            </dict>
        </dict>
        <key>OSBundleLibraries</key>
        <dict>
            <key>com.apple.iokit.IOUSBFamily</key>
            <string>1.8</string>
        </dict>
    </dict>
</plist>

Then i put the "kext" into /Library/Extensions/, fixed ownership and permissions and followed some other instructions to manually load it.

First deactivated signing check with terminal

Code:
sudo nvram kext-dev-mode=1

and rebooted. Then

Code:
sudo kextload TomTom.kext

After all that, also with System Info still claiming my "kext" not beeing loaded nor beeing loadable, i got full access to the watch from the JAVA-app with USB!

Also i did some adjustments to the SIP-settings with OCLP...

OCLP Security Settings.png

...to get the Kext to load.

Don't really know what did "the magic" in the end. I am just happy that things work now and the perfectly working once expensive watch isn't an intentionally made "obsolete" piece of electronic waste anymore.
 
Last edited:
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.