Contribute
Register

[Solution] COM Serial Port on Gigabyte Z170X running 10.11.4

Status
Not open for further replies.
Well i did try to load through clover, although after boot the device still shows up on ioreg.
Attaching the kext, you can have a look.
If you have any tips on this route, kindly let me know.
 

Attachments

  • Hack16X50Serial.kext.zip
    32.8 KB · Views: 56
Else we can take another route, and we use rehabman's method,
i got the path for the device,

IMG_2026.JPG


Maybe a SSDT patch?

Regards.
 
On the contrary, it did work it seems.
Although the device is showing up in the ioreg, while verbose booting, it is no longer hindering the boot process.
That is what we were intending to do right?
Also, Thanks a LOT. :clap:

Attaching the debug files again, and attaching the kext as well.
 

Attachments

  • debug_336.zip
    1.6 MB · Views: 58
  • Hack16X50Serial.kext.zip
    28.7 KB · Views: 65
On the contrary, it did work it seems.
Although the device is showing up in the ioreg, while verbose booting, it is no longer hindering the boot process.
That is what we were intending to do right?
Also, Thanks a LOT. :clap:

Attaching the debug files again, and attaching the kext as well.
ProbeScore is now 0x3e8 = 1000 and CFBundleIdentifier is now com.apple.driver.Hack16X50Serial so it looks like our kext loaded but it also looks like the code was executed because some other properties exist that are not in the Info.plist. I don't know why it doesn't hinder the boot process.

I suggested removing the MacOS folder from the kext. Then try kextload to verify the kext. Then when the kext is verified successfully, move it to the Clover kexts folder.

First, change the Info.plist to this:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>BuildMachineOSBuild</key>
    <string>17A405001</string>
    <key>CFBundleDevelopmentRegion</key>
    <string>English</string>
    <key>CFBundleIdentifier</key>
    <string>com.hack.driver.Hack16X50Serial</string>
    <key>CFBundleInfoDictionaryVersion</key>
    <string>6.0</string>
    <key>CFBundleName</key>
    <string>Hack16X50Serial</string>
    <key>CFBundlePackageType</key>
    <string>KEXT</string>
    <key>CFBundleShortVersionString</key>
    <string>3.2</string>
    <key>CFBundleSignature</key>
    <string>????</string>
    <key>CFBundleSupportedPlatforms</key>
    <array>
        <string>MacOSX</string>
    </array>
    <key>CFBundleVersion</key>
    <string>1.9</string>
    <key>DTCompiler</key>
    <string>com.apple.compilers.llvm.clang.1_0</string>
    <key>DTPlatformBuild</key>
    <string>10P70r</string>
    <key>DTPlatformName</key>
    <string>macosx</string>
    <key>DTPlatformVersion</key>
    <string>10.14</string>
    <key>DTSDKBuild</key>
    <string>18G101</string>
    <key>DTSDKName</key>
    <string>macosx10.14internal</string>
    <key>DTXcode</key>
    <string>1020</string>
    <key>DTXcodeBuild</key>
    <string>10P70r</string>
    <key>IOKitPersonalities</key>
    <dict>
        <key>PCI 16X50 Serial Port</key>
        <dict>
            <key>CFBundleIdentifier</key>
            <string>com.hack.driver.Hack16X50Serial</string>
            <key>IOClass</key>
            <string>com_hack_driver_16X50PCI</string>
            <key>IOPCIClassMatch</key>
            <string>0x07000000&amp;0xFFFF0000</string>
            <key>IOProbeScore</key>
            <integer>1000</integer>
            <key>IOProviderClass</key>
            <string>IOPCIDevice</string>
        </dict>
    </dict>
    <key>LSMinimumSystemVersion</key>
    <string>10.14</string>
    <key>OSBundleCompatibleVersion</key>
    <string>1.9</string>
</dict>
</plist>

Then with the following commands or similar: unload existing drivers, remove the MacOS folder, fix permissions, then kextutil to verify and load the kext.
Code:
sudo kextunload -b com.apple.driver.Apple16X50Serial
sudo kextunload -b com.hack.driver.Hack16X50Serial
cd /Volumes/Storage/Downloads/
sudo rm -R Hack16X50Serial.kext/Contents/MacOS

sudo chown -R root:wheel Hack16X50Serial.kext
sudo find Hack16X50Serial.kext -type d -exec /bin/chmod 0755 {} \;
sudo find Hack16X50Serial.kext -type f -exec /bin/chmod 0644 {} \;
sudo kextutil -v 6 /Volumes/Storage/Downloads/Hack16X50Serial.kext

kextutil will have a warning that the kext does not point to a kext that has an executable. I'm not sure if that will make the kext unusable (I haven't made a codeless kext in awhile).
 
ProbeScore is now 0x3e8 = 1000 and CFBundleIdentifier is now com.apple.driver.Hack16X50Serial so it looks like our kext loaded but it also looks like the code was executed because some other properties exist that are not in the Info.plist. I don't know why it doesn't hinder the boot process.

I suggested removing the MacOS folder from the kext. Then try kextload to verify the kext. Then when the kext is verified successfully, move it to the Clover kexts folder.

First, change the Info.plist to this:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>BuildMachineOSBuild</key>
    <string>17A405001</string>
    <key>CFBundleDevelopmentRegion</key>
    <string>English</string>
    <key>CFBundleIdentifier</key>
    <string>com.hack.driver.Hack16X50Serial</string>
    <key>CFBundleInfoDictionaryVersion</key>
    <string>6.0</string>
    <key>CFBundleName</key>
    <string>Hack16X50Serial</string>
    <key>CFBundlePackageType</key>
    <string>KEXT</string>
    <key>CFBundleShortVersionString</key>
    <string>3.2</string>
    <key>CFBundleSignature</key>
    <string>????</string>
    <key>CFBundleSupportedPlatforms</key>
    <array>
        <string>MacOSX</string>
    </array>
    <key>CFBundleVersion</key>
    <string>1.9</string>
    <key>DTCompiler</key>
    <string>com.apple.compilers.llvm.clang.1_0</string>
    <key>DTPlatformBuild</key>
    <string>10P70r</string>
    <key>DTPlatformName</key>
    <string>macosx</string>
    <key>DTPlatformVersion</key>
    <string>10.14</string>
    <key>DTSDKBuild</key>
    <string>18G101</string>
    <key>DTSDKName</key>
    <string>macosx10.14internal</string>
    <key>DTXcode</key>
    <string>1020</string>
    <key>DTXcodeBuild</key>
    <string>10P70r</string>
    <key>IOKitPersonalities</key>
    <dict>
        <key>PCI 16X50 Serial Port</key>
        <dict>
            <key>CFBundleIdentifier</key>
            <string>com.hack.driver.Hack16X50Serial</string>
            <key>IOClass</key>
            <string>com_hack_driver_16X50PCI</string>
            <key>IOPCIClassMatch</key>
            <string>0x07000000&amp;0xFFFF0000</string>
            <key>IOProbeScore</key>
            <integer>1000</integer>
            <key>IOProviderClass</key>
            <string>IOPCIDevice</string>
        </dict>
    </dict>
    <key>LSMinimumSystemVersion</key>
    <string>10.14</string>
    <key>OSBundleCompatibleVersion</key>
    <string>1.9</string>
</dict>
</plist>

Then with the following commands or similar: unload existing drivers, remove the MacOS folder, fix permissions, then kextutil to verify and load the kext.
Code:
sudo kextunload -b com.apple.driver.Apple16X50Serial
sudo kextunload -b com.hack.driver.Hack16X50Serial
cd /Volumes/Storage/Downloads/
sudo rm -R Hack16X50Serial.kext/Contents/MacOS

sudo chown -R root:wheel Hack16X50Serial.kext
sudo find Hack16X50Serial.kext -type d -exec /bin/chmod 0755 {} \;
sudo find Hack16X50Serial.kext -type f -exec /bin/chmod 0644 {} \;
sudo kextutil -v 6 /Volumes/Storage/Downloads/Hack16X50Serial.kext

kextutil will have a warning that the kext does not point to a kext that has an executable. I'm not sure if that will make the kext unusable (I haven't made a codeless kext in awhile).

Tried multiple times, although with the kext im not able to boot at all. Whereas without any kexts, somehow, im able to boot. So im gonna keep this running as long as it does, if it stops, ill get back.

Thanks a lot for all the help, Truly!
 

Attachments

  • Hack16X50Serial.kext.zip
    1 KB · Views: 63
Tried multiple times, although with the kext im not able to boot at all. Whereas without any kexts, somehow, im able to boot. So im gonna keep this running as long as it does, if it stops, ill get back.

Thanks a lot for all the help, Truly!
So you're saying the problem you had has gone away without using any kext?

Back to the codeless kext issue. It makes sense to have kexts that have code, and kexts that don't have code that point to other kexts with code. But if you want a kext with no code, then I guess you could use Xcode to make code that does nothing or maybe IOClass can be IOService and CFBundleIdentifier can be whatever bundle contains the IOService class, like this:

Code:
<key>CFBundleIdentifier</key>
<string>com.apple.kpi.iokit</string>
<key>IOClass</key>
<string>IOService</string>

IOService is a class that won't do anything special.
 
Status
Not open for further replies.
Back
Top