Jump to content
  • Announcements

    • Allan

      Forum Rules   04/13/2018

      Hello folks! As some things are being fixed, we'll keep you updated. Per hour the Forum Rules don't have a dedicated "Tab", so here is the place that we have our Rules back. New Users Lounge > [READ] - InsanelyMac Forum Rules - The InsanelyMac Staff Team. 
solu

Cardbus/PCMCIA Controller ID 104C:8039 Texas Instruments PCIxx12

421 posts in this topic

Recommended Posts

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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 ..)

Share this post


Link to post
Share on other sites

[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?

Share this post


Link to post
Share on other sites
As root, type "dmesg | PC"; you should see something about TI xx12 being found
--> -sh: PC: command not found

 

dmesg

 

--> IOPCCardBridge::start failed :thumbsdown_anim:

 

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.

Share this post


Link to post
Share on other sites

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?

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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) :blink: ?

Share this post


Link to post
Share on other sites
Your ranges indeed are different, maybe you have the PCIxx21 rather than the PCIxx12?
Nope :blink: :
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]

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 ;) !!

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
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 ::D )

If someony could help with making this driver it would be awesome.

 

 

Ruud

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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?

Share this post


Link to post
Share on other sites
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) ..

Share this post


Link to post
Share on other sites

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!

Share this post


Link to post
Share on other sites

@ 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 :-) !

Share this post


Link to post
Share on other sites

@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.

Share this post


Link to post
Share on other sites

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?

post-58748-1160686912_thumb.jpg

Share this post


Link to post
Share on other sites

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)

post-58748-1160690188_thumb.png

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
....

 

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....

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Recently Browsing   0 members

    No registered users viewing this page.

×