solu Posted October 7, 2006 Share Posted October 7, 2006 UPDATE: 1.6.4 of this kext (which belongs to Darwin 9/Leopard) already contains references to the xx12 chip, so it probably has been updated to include xx12 support "out of the box". See for yourself: strings /System/Library/Extensions/IOPCCardFamily.kext/Contents/MacOS/IOPCCardFamily | grep XX TI XX12 So the method below is probably outdated now. Simply editing the plist should be sufficient (use the computer name from the 2nd line of ioreg). Here is a driver patching method for the Cardbus/PCMCIA Controller ID 104C:8039 Texas Instruments PCIxx12 for Darwin. For Source Code and License, please see http://darwinsource.opendarwin.org/Current...CCardFamily-45/ If you like this driver, please consider making a donation to a charitable organization. How to use? Backup your original IOPCCardFamily driver Replace your IOPCCardFamily driver with the attached one that contains all necessary modifications Reboot As root, type "dmesg | grep PC"; you should see something about TI xx12 being found How was it done? In a nutshell: First, identified the card under Linux (the same information can also be found in the Windows device manager) 0000:02:06.0 CardBus bridge: Texas Instruments: Unknown device 8039 Flags: bus master, medium devsel, latency 168, IRQ 201 Memory at f4200000 (32-bit, non-prefetchable) Bus: primary=02, secondary=03, subordinate=06, sec-latency=176 Memory window 0: 40000000-41fff000 (prefetchable) Memory window 1: 42000000-43fff000 I/O window 0: 00005000-000050ff I/O window 1: 00005400-000054ff 16-bit legacy interface ports at 0001 Second, entered the correct values for I/O window and the Memory window into Info.plist using a plist editor (the values are Base64 encoded in the file, so a text editor is not sufficient) Third, repaced the name of a similar TI bridge ("TI 7610"/ID "AC48" in this example) with "xx12" so that it is correctly recognized: perl -pi -e 's|TI 7610|TI xx12|g' IOPCCardFamily Fourth (important): Used a hex editor to edit the device ID into the binary driver. Important: device ID "8039" becomes hex "3980". In the following example, ID "AC48" will be replaced with "8039": perl -pi -e 's|\x48\xAC\x00\x00|\x39\x80\x00\x00|g' IOPCCardFamily Afterwards, your Cardbus slot should be working in Darwin, you should see a message during verbose boot mentioning your PCMCIA slot. IOPCCardFamily.kext.zip Link to comment Share on other sites More sharing options...
Ruud Posted October 9, 2006 Share Posted October 9, 2006 is there a way to make this one work with the PCIxx21 from Texas Instruments as well? This one is used in an acer 5024 series and i saw that more people are looking for this because ther built in wireless doenst work and want to use the cardbus for a wireless pcmcia card. I also like it to use it for that purpose. Great work by the way for the driver, many people will like it i think. Ruud Link to comment Share on other sites More sharing options...
BuXb Posted October 10, 2006 Share Posted October 10, 2006 Hi probono, trying to dig what you did here Second, entered the correct values for I/O window and the Memory window into Info.pist using a plist editor (the values are Base64 encoded in the file, so a text editor is not sufficient)Now I am stunned a bit: for editing plist files under Windows I use Win32Pad which automatically detects the unix format of these files (should be Base64 encoding from what I know). I have the Info.plist just loaded, but cannot find ANY of the strings you mentioned (00005000-000050ff, 00005400-000054ff, 40000000-41fff000, 42000000-43fff000), not even with my hex editor. Are those lines hidden - do I need a special editor to find and edit them? Which plist editor do you use? Thanks for the driver, Bugs (don't have a PCMCIA card at hand so cannot test it right now ..) Link to comment Share on other sites More sharing options...
BuXb Posted October 10, 2006 Share Posted October 10, 2006 [EDIT] me stupid - you translated the values, right?: I/O Port Ranges: 00005000-000050ff & 00005400-000054ff --> AD/AAAA//8 & AAD+AAAA/v8 Memory Ranges: 40000000-41fff000 & 42000000-43fff000 --> 9CAAAPQgD/8 & /+/wAP/v//8 & 3AAAAN////8 & AA3wAAAN//8= couple of questions: 1. why are there 4 Memory ranges in the info.plist? 2a. which program do you use to translate the ranges from one format into the other, and what are these formats called? 2b. do you know of a platform independent web interface that can do that? Link to comment Share on other sites More sharing options...
BuXb Posted October 10, 2006 Share Posted October 10, 2006 As root, type "dmesg | PC"; you should see something about TI xx12 being found--> -sh: PC: command not found dmesg --> IOPCCardBridge::start failed however, in System Profiler: IOPCCardFamily: Dependencies satisfied In terminal I did everything correctly before reboot: sudo -s (give password and hit ENTER; if your password is blank then just hit ENTER) chown -R root:wheel /System/Library/Extensions/*.kext diskutil repairpermissions / rm /System/Library/Extensions.mkext /System/Library/Extensions.kextcache kextcache -k /System/Library/Extensions/ reboot My Toshiba Laptop does have the Cardbus/PCMCIA Controller ID 104C:8039 Texas Instruments PCIxx12. I'll boot into Windows again later on to compare all the ranges you mentioned. Link to comment Share on other sites More sharing options...
nethak Posted October 10, 2006 Share Posted October 10, 2006 Thanks for your hard work to get the TI xx12 up and running. It definitely works for me and my Acer Aspire 3680. The only problem I'm having is that after I sleep the notebook, the PC Card slots are dead until next reboot. Since this is the ONLY problem I experience when sleeping my notebook, I'm wondering if the problem lies with the xx12 driver or my ACPI files? Link to comment Share on other sites More sharing options...
Ruud Posted October 10, 2006 Share Posted October 10, 2006 Thanks for your hard work to get the TI xx12 up and running. It definitely works for me and my Acer Aspire 3680. The only problem I'm having is that after I sleep the notebook, the PC Card slots are dead until next reboot. Since this is the ONLY problem I experience when sleeping my notebook, I'm wondering if the problem lies with the xx12 driver or my ACPI files? This is because of the acpi files, i have this problem with usb also. First step would be to find out the information about the card from Linux. Boot a Linux Live CD (such as Knoppix), and use the command "lspci -v". Then, post the output of the relevant block (should be very similar to above). I wil take a look at it tomorrow, have to download the live cd first. Ruud Link to comment Share on other sites More sharing options...
BuXb Posted October 10, 2006 Share Posted October 10, 2006 hi probono, here are the specs from my Laptop. In Windows PCMCIA is split up in controller and device, and the values are definitely different, too: Class: PCMCIA adapters | Device: Generic CardBus Controller Device ID: PCI\VEN_104C&DEV_8039&SUBSYS_FF311179&REV_00\4&6B16D5B&0&20F0 IRQ: [00000017] MEM: [000DB000 - 000DBFFF] MEM: [D0000000 - D3FFFFFF] MEM: [F2BF9000 - F2BF9FFF] MEM: [F2BFA000 - F2BFAFFF] IO: [0000FA00 - 0000FAFF] IO: [0000FD00 - 0000FDFF] --------------- Class: PCMCIA and Flash memory devices | Device: Texas Instruments PCIxx12 Integrated FlashMedia Controller Device ID: PCI\VEN_104C&DEV_803B&SUBSYS_FF311179&REV_00\4&6B16D5B&0&22F0 IRQ: [00000017] MEM: [F2BF8000 - F2BF8FFF] what to do now? I would really like to use a 108 Mbit PCMCIA WLAN Card from Netgear .. Greetz, Bugs. Link to comment Share on other sites More sharing options...
BuXb Posted October 11, 2006 Share Posted October 11, 2006 I see. Right now the SD memory card slot does not have any priority. What bugs me is that NONE of the values from my machine matches your IDs. How can we make them match (either you or, if you tell me how to, me) ? Link to comment Share on other sites More sharing options...
BuXb Posted October 11, 2006 Share Posted October 11, 2006 Your ranges indeed are different, maybe you have the PCIxx21 rather than the PCIxx12?Nope :Device: Texas Instruments PCIxx12 Integrated FlashMedia ControllerDevice ID: PCI\VEN_104C&DEV_803B&SUBSYS_FF311179&REV_00\4&6B16D5B&0&22F0 IRQ: [00000017] MEM: [F2BF8000 - F2BF8FFF] There is a free download from Apple called XCode and Developer Tools which contains a little utility for editing plist files (very similar to regedit on Windows). This utility automatically takes care of converting the values in the right way. Use this to enter your memory ranges.I have XCode 2.4 from the Leopard Pre-DVD, can I use that? Can you tell me the name of the "little utility for editing plist files" once I have XCode 2.x installed? Oh BTW, for editing Plist files I have been using PlistEdit Pro - do you have any idea if that tool can do the translation, too? Thanks for your input so far, I should be able to get your driver going, shouldn't I !! Link to comment Share on other sites More sharing options...
hyde Posted October 11, 2006 Share Posted October 11, 2006 Hi everyone First of all, thank you Probono for your work. I've got a Pavillion zd8000 with PCIxx21. My output when I boot on Knoppix and use the command "lspci -v" is : 0000:0b:00.0 CardBus bridge: Texas Instruments: Unknown device 8031 Subsystem: Hewlett-Packard Company: Unknown device 3082 Flags: bus master, medium devsel, latency 168, IRQ 16 Memory at 40000000 (32-bit, non-prefetchable) Bus: primary=0b, secondary=0c, subordinate=0f, sec-latency=176 Memory window 0: 40400000-407ff000 (prefetchable) Memory window 1: 40800000-40bff000 I/O window 0: 00005400-000054ff I/O window 1: 00005800-000058ff 16-bit legacy interface ports at 0001 As you said, it's quite similar except the second line. I've got some questions: - Should I take device id 8031 or 3082 ? - Which is the file where I have to put my device id ? - Could someone tell us exactly which program to use to translate the ranges from one format into the other to enter the correct values for I/O window and the Memory window into Info.plist ? Thanks for the answer Link to comment Share on other sites More sharing options...
Ruud Posted October 11, 2006 Share Posted October 11, 2006 Hi everyone First of all, thank you Probono for your work. I've got a Pavillion zd8000 with PCIxx21. My output when I boot on Knoppix and use the command "lspci -v" is : 0000:0b:00.0 CardBus bridge: Texas Instruments: Unknown device 8031 Subsystem: Hewlett-Packard Company: Unknown device 3082 Flags: bus master, medium devsel, latency 168, IRQ 16 Memory at 40000000 (32-bit, non-prefetchable) Bus: primary=0b, secondary=0c, subordinate=0f, sec-latency=176 Memory window 0: 40400000-407ff000 (prefetchable) Memory window 1: 40800000-40bff000 I/O window 0: 00005400-000054ff I/O window 1: 00005800-000058ff 16-bit legacy interface ports at 0001 As you said, it's quite similar except the second line. I've got some questions: - Should I take device id 8031 or 3082 ? - Which is the file where I have to put my device id ? - Could someone tell us exactly which program to use to translate the ranges from one format into the other to enter the correct values for I/O window and the Memory window into Info.plist ? Thanks for the answer I have the same ti device ( now i dont have do download de knoppix cd : ) If someony could help with making this driver it would be awesome. Ruud Link to comment Share on other sites More sharing options...
hyde Posted October 11, 2006 Share Posted October 11, 2006 Maybe it's possible to put a range for the Memory window and I/O window values instead of the values for only one device. If we can do that there will be no problem if people have the same device id but differents values for Memory window and I/O window. Link to comment Share on other sites More sharing options...
BuXb Posted October 11, 2006 Share Posted October 11, 2006 Check out this thread, there is some interesting information about ranges. However it is not exactly about memory ranges .. Link to comment Share on other sites More sharing options...
MikhaiL Posted October 12, 2006 Share Posted October 12, 2006 Hi i have a toshiba a100 sk9 with the same device and vendor id for my cardbus controller , but when i type in dmesg | grep PC - i get errors and nothing is loading. Is there anything i can do to fix that? Link to comment Share on other sites More sharing options...
BuXb Posted October 12, 2006 Share Posted October 12, 2006 Hi i have a toshiba a100 sk9 with the same device and vendor id for my cardbus controller , but when i type in dmesg | grep PC - i get errors and nothing is loading. Is there anything i can do to fix that?.. verify (as we had to do, too) that the ranges of your controller are the same, too (as explained in probono's first posting) .. Link to comment Share on other sites More sharing options...
fingerr Posted October 12, 2006 Share Posted October 12, 2006 Hi all, I have Tecra A7 and Windows reports VEN_104 and DEV_8039, so I've made changes (except hexedit binary file) but I got message during startup: IOPPCard info: Intel PCIC probe: TI xx12 rev 00 and my system hangs after that. Anyone know such a situation? p.s. Where/How can I find string that should be hexedited in binary file? (I use HexEdit) Thanks in advance and best regards! Link to comment Share on other sites More sharing options...
BuXb Posted October 12, 2006 Share Posted October 12, 2006 @ Mariusz : inside the IOPCCardFamily.kext (/Contents/MacOS) there are two files: IOPCCardFamily~ and IOPCCardFamily. The first one is the unedited original. Just compare these two files in your hex app (I use Hex Workshop 4.23), that way you will find the two instances that have to be edited. Good luck :-) ! Link to comment Share on other sites More sharing options...
fingerr Posted October 12, 2006 Share Posted October 12, 2006 @BugsBunny Thanks for info Bugs. So it means that IOPCCardFamily is suitable for my device. Still waiting for someone who solved problem similiar to mine. Link to comment Share on other sites More sharing options...
MikhaiL Posted October 12, 2006 Share Posted October 12, 2006 um, in device manager, i looked and found 4 different memory ranges, so, could you help me which go where. and where would i insert them in plist? Link to comment Share on other sites More sharing options...
MikhaiL Posted October 12, 2006 Share Posted October 12, 2006 Well, i tried inputting things by myself and i ran into some problems. First, Plist editor pro opened the files, i found the submenu called Test X86PC and started editing the memory and i/o values, well, it didnt go so well. First of all, as i was trying to input the values for i/o ranges, in windows i had 4-4 values, but corrct input had there had 8 8 structure, so i added 4 0's before the hex part and the program was automatically changing my inputs into something wired as you can see on the screenshot. secondly, i was able to input all memory range values cuz i had 4 to choose from as you can see, but for i/o - i only found 2 from device manager and the plist says that there are 3 places to edit, so i left the third one unedited. - tell me, am i doing anything right at all? (something tells me i am totally lost) Link to comment Share on other sites More sharing options...
BuXb Posted October 12, 2006 Share Posted October 12, 2006 I am pretty much groping in the dark, too. Maybe depicting what I have been trying might answer some of you guys questions. Tried to open the Info.plist from within the kext in the Extensions folder, that didn't work because of missing privileges. Copied the Info.plist to my Desktop and opened it with PlistEdit Pro. Also found the Submenu Test X86PC but figured that my machine does not appear in System Profiler as Test X86PC but as ADP2,1 so went into that submenu. Don't remember anymore how many lines there were for I/O and Memory Ranges, but from what I remember the amount of entries was not correct so I dublicated and also deleted in the trees (right mouse click). Then I edited the ranges which look like this: 00000000 0000FFFF with double click. So I entered my values in the same scheme, with a blank between the two blocks. But entering 0000FA00 0000FAFF would immediately turn into 000000FA 0000FFFA (which is not even what is written in the plist if you open it with e.g. Textedit). I thought "what the heck, maybe that's correct". Copied the Info.plist back into the extension, confirmed "yes, replace" and let my one-click automated permissions-script run (see attachment), rebooted - on reboot I saw the same message again: IOPCCard load failed. So I went ahead and edited the Info.plist in Apple's Property List Editor v. 2.1 instead (also attached). That one displays the values a bit different: <0000fa00 0000faff > mind the blank before the > at the end. Entered my values and look-a-there, they remained the way I entered them! Copied the Info.Plist back into the kext, ran permissions script, rebooted - same error. That's where I am right now - and going to sleep.. @ probono: it is correct to edit the ADP2,1 section, isn't it? @ Mariusz: you're half a step further since your card has actually been recognized by Mac OS x86 Just tried to boot of the Knoppix 5.0 CDto see what values Linux gives me - maybe they are not the same as in Windows Device Manager because of Windows ACPI ... .. it hangs right at the beginning after the kernel loads with: "PCMCIA found, starting cardmgr" .. Booting Knoppix with NOACPI NOAPIC ("for bad BIOS") gets me accross the PCMCIA card. Here are the values: 0000:0a:04.0 CardBus bridge: Texas Instruments: Unknown device 8039 Subsystem: Toshiba America Info Systems: Unknown device ff31 Flags: bus master, medium devsel, latency 168, IRQ 11 Memory at b3200000 (32-bit, non-prefetchable) Bus: primary=0a, secondary=0b, subordinate=0e, sec-latency=176 Memory window 0: 50000000-51fff000 (prefetchable) Memory window 1: 52000000-53fff000 I/O window 0: 00004000-000040ff I/O window 1: 00004400-000044ff 16-bit legacy interface ports at 0001 Without ACPI they look different than the ones in Windows .. There are three more Texas Instruments Unknown devices underneath (803a, b and c) but I think those are not important. Entered the Values from Knoppix into the Info.plist (section ADP2,1) with Apple's tool [...], reboot - same error: noname:~ root# dmesg | grep PC IOPCCardBridge::start failed probono I need help now, this is as far as I can go by myself .. . Could you check my Info.Plist if I edited the range values correctly? I attached it, too. Thank you very much, Bugs. Property_List_Editor_2.1.dmg Repair___Set_Permissions_1.0.dmg Info.plist.zip Link to comment Share on other sites More sharing options...
fingerr Posted October 13, 2006 Share Posted October 13, 2006 .... Just tried to boot of the Knoppix 5.0 CDto see what values Linux gives me - maybe they are not the same as in Windows Device Manager because of Windows ACPI ... .. it hangs right at the beginning after the kernel loads with: "PCMCIA found, starting cardmgr" .. ..... Hi Bugs, I've had the same problem with PCMCIA under linux, system were hanging after starting PCMCIA services (kernel 2.6.17). I've compiled 2.6.18 kernel and the problem disapeared. I've tried pcnet_cs compatible network card and it working fine. Today I tried to boot my linux but it hangs in other part: Setting up ICE socket directory.... Link to comment Share on other sites More sharing options...
BuXb Posted October 13, 2006 Share Posted October 13, 2006 Hi Bugs, I've had the same problem with PCMCIA under linux, system were hanging after starting PCMCIA services (kernel 2.6.17). I've compiled 2.6.18 kernel and the problem disapeared. I am not that desperate yet .. .Other than that, glad to hear this is a Linux Kernel bug. I have other Linux live CDs from which I could boot, gonna check if they have the new Kernel and boot through with ACPI enabled to get ACPI-ranges under Linux.I've tried pcnet_cs compatible network card and it working fine.what's that - a PCMCIA card? And is it now working in Linux or in Mac OS x86?Today I tried to boot my linux but it hangs in other part: Setting up ICE socket directory....I am geting lost now .. Cheers, Bugs. Link to comment Share on other sites More sharing options...
fingerr Posted October 13, 2006 Share Posted October 13, 2006 Hi Bugs, pcnet_cs is kernel module for linux PCMCIA ne2000 compatible network card. MacOS still hangs as described before p.s. If you have built-in card reader, you may find this interesting: http://prdownload.berlios.de/tifmxx/tifm-0.6b.tar.bz2 this is linux kernel modules for card reader. Now it supports SD cards, but they are working on other card types. Link to comment Share on other sites More sharing options...
Recommended Posts