LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Linux - Hardware (http://www.linuxquestions.org/questions/linux-hardware-18/)
-   -   RS232 cardbus device doesn't work with latest kernel (http://www.linuxquestions.org/questions/linux-hardware-18/rs232-cardbus-device-doesnt-work-with-latest-kernel-4175413747/)

HackTidus 06-27-2012 08:38 PM

RS232 cardbus device doesn't work with latest kernel
 
So, I've bought a generic RS232 card for my computer, it's cardbus and it features two independant serial ports, which work well in windows with the drivers they supplied.

The thing is they don't work in linux, I'm using the 3.2.0 kernel in debian stable (squeeze)

When I plug in the card it outputs this:


Code:

Jun 28 05:17:46 debian kernel: [ 2125.164174] pcmcia_socket pcmcia_socket0: pccard: PCMCIA card inserted into slot 0
Jun 28 05:17:46 debian kernel: [ 2125.164704] pcmcia 0.0: pcmcia: registering new device pcmcia0.0 (IRQ: 3)
Jun 28 05:17:46 debian kernel: [ 2125.166504] serial_cs 0.0: trying to set up [0x0279:0x950b] (pfc: 0, multi: 0, quirk: cfbc9b30)
Jun 28 05:17:46 debian kernel: [ 2125.208263] 0.0: ttyS0 at I/O 0x3f8 (irq = 3) is a 16450

So it seems to recognize the card, I want to point out that there are two serial ports and it only picks one up.

There's no I/O from the card, it's attached to my server which through getty provides me with a serial console

I've tried screen and minicom, the screen is blank, and it remains frozen when asked to exit, forcing me to either kill the process or remove the card

Misc info:

-As said, computer runs Debian squeeze with 3.2.0 kernel from backports

-Card is a cardbus-type, two port device which I'm pretty sure that uses the Oxford Semiconductor's OXCB950 (Now oxford semiconductor is owned by PLX technology and the product is end of life, yay)

I know my stuff with Linux so I'll provide any info you need, I've been googling for days and I'm starting to feel like giving up, thanks a lot for your attention.

jefro 06-28-2012 03:49 PM

The complex answer may be too much trouble for such a cheap item. Why don't you just buy one that has OEM support?

Pcmcia/pc card support is being removed from linux day by day. Not all the old tools are in there anymore and laptops were never bios equal and never did the pc slot reside on the same part of the system. Some are off pci to pci bridges and what not. Really usb was the reason linux dropped pcmcia support in almost a day.

I see the words generic and pcmcia and I get scared. It won't be easy.

I guess for grins, try about 10 live cd's. Be sure one of them is Knoppix maybe 3.3 and maybe a 5.x version.

HackTidus 06-29-2012 08:08 AM

So, trying old livecd's might work?

That's actually cool because I want to use that computer as a diskless workstation, booting from my server with PXE, I'll try a few and see what happens, thanks for the advice.

Also, I'm really willing to try anything, even compiling some modules or recompiling the kernel if necessary.

Thanks for your attention.

jefro 06-29-2012 09:19 AM

I have maybe 10 live cd's in my box of stuff to try. Each one has advantages that I know about and use to decide what is going on. Older Knoppix cd's were pretty good at some stuff. They along with tests and commands help the user decide which way to go next. Booting live cd's just offer fast and easy ways to try. They can't hurt.


There is two problems here really. The pcmcia support and the generic card. You might get past the pcmcia support or it is common to get it working. The second part is this card. Unless this chip is the realtek of the pcmcia cards you may have trouble. Drivers look for chip numbers sometimes and if this is a common chip with a different number it may not work. You may have to find the binary reverse number locations in the driver to fix it. It gets real complex working on drivers.


Side note.
At one time the promise of ndiswrapper was and still is a way to run any windows driver in linux. The original authors never finished that work but it should be finished. By people smarter than I am hopefully.

HackTidus 06-29-2012 10:23 AM

I found a knoppix 3.9 cd laying somewhere

When the card is plugged on it shows cardmgr (which seems a daemon for cardbus and pcmcia) modprobing serial_cs and starting ttyS10 which seems promising, but screen and minicom react the same way as with kernel 3.2.0

I'll give a shot at NDISwrapper, it seems it also supports cardbus drivers so it won't hurt, as I do have working win2k drivers. I'll post results shortly.

Thanks for your attention

HackTidus 06-29-2012 10:57 AM

Didn't work, one thing I noticed though:

it seems, that NDISwrapper decides, upon installing the windows driver, that it is suitable for a series of DEVID's starting with 1415:XXXX (including 950B)

And the DEVID that linux detects is 0279:950B

It still bugs me it only picks up one serial port...

I forced NDISwrapper to work with that DEVID but didn't work.

I'll try Knoppix 5.1 tonight and post results.

Thanks for your attention

jefro 06-29-2012 11:13 AM

I am sorry I confused you. Ndiswrapper does not support anything but nic cards right now. Don't use that.

The old knoppix uses the old pcmcia commands. I forget them but something like cardctrl then options to use some cards.

Hey, getting one serial to work isn't bad.

HackTidus 06-29-2012 11:04 PM

It's cardmgr I think, I'll tinker with it and see what happens.

You're being really helpful, thanks a lot!

jefro 06-30-2012 08:56 AM

http://linux.die.net/man/8/pccardctl

and

http://linux.die.net/man/8/cardctl

Too may help. It think this has all been taken out on new distros.

HackTidus 07-01-2012 04:16 PM

What an utter pain in the ass this is...

I'm starting to see what's really going on, and the reason why I'm screwed:

I've finally determined that my card's chipset is an OXCF950, which as the OXCB950, it's single port only...

So there must be some kind of controller, like a hub or whatever that allows the host to use two OXCF950 based uart's

Windows does the job, but on the linux kernel, there's a number of quirks added to the serial modules source files, here's one of them:

Code:

{
  .manfid = MANFID_OXSEMI,
  .prodid = ~0,
  .multi  = -1,
  .wakeup = quirk_wakeup_oxsemi,
}

This fragment basically defines, in drivers/serial/serial_cs.c, the irq's for the second port (or even fourth), and it is defined here that it only has one port (.multi = -1 means it is not multi-port)

Maybe setting .multi = 2 fixes this stuff but what is very likely is that I'm gonna have to mess with kernel modules...

cardctl and pccardctl didn't help much, I tried to set it up in some way that the scheme would describe two serial ports in the same socket to no avail.

This is quite over me but I'll work to get it done, if I come up with a solution I'll post it, and if someone comes up with any idea I'd love to hear it.

Thanks for your support!


All times are GMT -5. The time now is 02:42 AM.