Skip to content

jacobrosenthal/fernvale-osx-codeless

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 

Repository files navigation

#fernvale-osx

Fernvale (Mediatek) OSX codeless drivers. The device shows up at as /dev/tty.usbmodem1410 and /dev/cu.usbmodem1410 for me. You MUST use the /dev/cu.usbmodem1410 interface when loading fernly

##install You need to disable signing which became mandatory at some point recently https://apple.stackexchange.com/questions/163059/how-can-i-disable-kext-signing-in-mac-os-x-10-10-yosemite

sudo nvram boot-args=kext-dev-mode=1

and reboot.

In a terminal

sudo cp -R fernvale.kext /System/Library/Extensions/
sudo chown root:wheel /System/Library/Extensions/fernvale.kext

##info

Fernvale wouldn’t create a /dev/tty for me under OSX Yosemite.

dmesg reported:

AppleUSBCDCACMData: Version number - 4.2.1b5, Input buffers 8, Output buffers 16
AppleUSBCDC: Version number - 4.2.1b5

At first I hoped to make a codeless kext but I'm was under the impression thats impossible for serial devices.

I was able to take the darwin sources apart, now found as fernvale-osx enable logging to find this much:

Jan 24 03:14:48 jacob-2 kernel[0]: USB (XHCI Root Hub USB 2.0 Simulation):Port 1 on bus 0xa connected or disconnected: portSC(0xe0206e1)
Jan 24 03:14:49 jacob-2 kernel[0]: 0        0 AppleUSBCDCECMData: start - Find CDC driver for ECM data interface failed
Jan 24 03:14:49 jacob-2 kernel[0]: e6005000        0        0 AppleUSBCDCACMData: start
Jan 24 03:14:49 jacob-2 kernel[0]: e6005000        0        0 AppleUSBCDCACMData: initStructure
Jan 24 03:14:49 jacob-2 kernel[0]: e6005000        0        0 AppleUSBCDCACMData: findCDCDriverAD
Jan 24 03:14:49 jacob-2 kernel[0]: e6005000 0 0xffffff8035b43a00 AppleUSBCDCACMData: findCDCDriverAD - CDC driver candidate
Jan 24 03:14:49 jacob-2 kernel[0]: e6005000 0 0xffffff8035b43a00 AppleUSBCDCACMData: findCDCDriverAD - Found our CDC driver
Jan 24 03:14:49 jacob-2 kernel[0]: e6005000        0        0 AppleUSBCDCACMData: start: Found the CDC device driver
Jan 24 03:14:49 jacob-2 kernel[0]: e6005000        0        8 AppleUSBCDCACMData: start - Number of input buffers requested
Jan 24 03:14:49 jacob-2 kernel[0]: e6005000        0       10 AppleUSBCDCACMData: start - Number of output buffers requested
Jan 24 03:14:49 jacob-2 kernel[0]: e6005000        8       10 AppleUSBCDCACMData: start - Buffer pools (input, output)
Jan 24 03:14:49 jacob-2 kernel[0]: e6005000 0 0xffffff8035861400 AppleUSBCDCACMData: createSerialStream
Jan 24 03:14:49 jacob-2 kernel[0]: e6005000        0        0 AppleUSBCDCACMData: createSerialStream - NON WAN CDC Device
Jan 24 03:14:49 jacob-2 kernel[0]: e6005000        0        0 AppleUSBCDCACMData: getPortNameForInterface
Jan 24 03:14:49 jacob-2 kernel[0]: e6005000        0        0 AppleUSBCDCACMData: findControlDriverAD
Jan 24 03:14:49 jacob-2 kernel[0]: e6005000        0        0 AppleUSBCDCACMData: findControlDriverAD - No AppleUSBCDCACMControl drivers found (iterator)

After a weekend of testing and studying, with credit to OS X and iOS Kernel Programming by Ole Henry Halvorsen I was actually able to alter the plist to match against the Mediatek data/comm interface while making no additional source code changes. One theory I currently have is that the Mediatek chip has its data/comm interface on 0 instead of 1 where Arduino/etc seem to have it and that whats throwing off the default matching.

About

codeless serial drivers for fernvale (mediatek) on osx

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published