# Ricoh drivers

## dsp

Hello all,

I write about problems with the Ricoh drivers. The main problem is that the "Ricoh controller" manages a lot of things.

After a lspci command i have :

```

00:00.0 Host bridge: Intel Corporation Mobile 945GM/PM/GMS, 943/940GML and 945GT Express Memory Controller Hub (rev 03)

00:02.0 VGA compatible controller: Intel Corporation Mobile 945GM/GMS, 943/940GML Express Integrated Graphics Controller (rev 03)

00:02.1 Display controller: Intel Corporation Mobile 945GM/GMS/GME, 943/940GML Express Integrated Graphics Controller (rev 03)

00:1b.0 Audio device: Intel Corporation 82801G (ICH7 Family) High Definition Audio Controller (rev 02)

00:1c.0 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 1 (rev 02)

00:1c.1 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 2 (rev 02)

00:1c.2 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 3 (rev 02)

00:1c.3 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 4 (rev 02)

00:1d.0 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #1 (rev 02)

00:1d.1 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #2 (rev 02)

00:1d.2 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #3 (rev 02)

00:1d.3 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #4 (rev 02)

00:1d.7 USB Controller: Intel Corporation 82801G (ICH7 Family) USB2 EHCI Controller (rev 02)

00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev e2)

00:1f.0 ISA bridge: Intel Corporation 82801GBM (ICH7-M) LPC Interface Bridge (rev 02)

00:1f.1 IDE interface: Intel Corporation 82801G (ICH7 Family) IDE Controller (rev 02)

00:1f.3 SMBus: Intel Corporation 82801G (ICH7 Family) SMBus Controller (rev 02)

02:00.0 Ethernet controller: Marvell Technology Group Ltd. 88E8055 PCI-E Gigabit Ethernet Controller (rev 13)

03:00.0 Network controller: Intel Corporation PRO/Wireless 3945ABG Network Connection (rev 02)

09:04.0 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev ba)

09:04.1 FireWire (IEEE 1394): Ricoh Co Ltd R5C832 IEEE 1394 Controller (rev 04)

09:04.4 System peripheral: Ricoh Co Ltd R5C592 Memory Stick Bus Host Adapter (rev 11)

```

We can see that the Ricoh driver manages MMC/SD/MS and IEEE 1394. Moreover, the Ricoh drivers also manages a webcam:

lsusb command:

```

Bus 001 Device 004: ID 05ca:183a Ricoh Co., Ltd Visual Communication Camera VGP-VCC7 [R5U870]

```

So, i have read that in the kernel ricoh driver are managed but i only see that it manages the MMC/SD.

At the end, all things that was been managed by the ricoh drivers doesn't work.

Can somebody has an idea?

Dasp

(Sorry for my english but i am not very good)

----------

## MotivatedTea

Ricoh has probably just re-branded some other generic components. Run "lspci -v" and look for the device numbers after "Subsystem: Device" for those device. Then google for those device numbers to figure out who actually made the chipsets for the devices.

You listed three Ricoh controllers: card reader, CardBus, and Firewire. You said that the card reader does work, which leaves only the CardBus and Firewire busses. Have you tried the generic drivers for those? The "Yenta-compatible" CardBus driver and the "OHCI1394" FireWire driver work with about 90% of all CardBus and FireWire adapters, respectively. I don't have a lot of experience with FireWire, but the last time I tried it, the "New FireWire stack" didn't work at all for me. I had to stick with the "Stable FireWire stack".

By the way, how do you know that the other devices aren't working? Neither the cardbus nor the firewire is going to show up in lsusb output. Have you tried plugging in devices to see if they're recognized?

----------

## dsp

I have this kind of message after "lspci -v" command:

```

00:1f.3 SMBus: Intel Corporation 82801G (ICH7 Family) SMBus Controller (rev 02)

   Subsystem: Sony Corporation Device 900e

   Flags: medium devsel

   I/O ports at 18a0 [size=32]

   Kernel driver in use: i801_smbus

09:04.0 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev ba)

   Subsystem: Sony Corporation Device 900e

   Flags: bus master, medium devsel, latency 168, IRQ 20

   Memory at fc101000 (32-bit, non-prefetchable) [size=4K]

   Bus: primary=09, secondary=0a, subordinate=0d, sec-latency=176

   Memory window 0: 50000000-53fff000 (prefetchable)

   Memory window 1: 54000000-57fff000

   I/O window 0: 00005000-000050ff

   I/O window 1: 00005400-000054ff

   16-bit legacy interface ports at 0001

   Kernel driver in use: yenta_cardbus

09:04.1 FireWire (IEEE 1394): Ricoh Co Ltd R5C832 IEEE 1394 Controller (rev 04) (prog-if 10 [OHCI])

   Subsystem: Sony Corporation Device 900e

   Flags: bus master, medium devsel, latency 32, IRQ 21

   Memory at fc100000 (32-bit, non-prefetchable) [size=2K]

   Capabilities: [dc] Power Management version 2

   Kernel driver in use: ohci1394

09:04.3 System peripheral: Ricoh Co Ltd R5C843 MMC Host Controller (rev ff) (prog-if ff)

   !!! Unknown header type 7f

   Kernel driver in use: ricoh-mmc

   Kernel modules: ricoh_mmc

09:04.4 System peripheral: Ricoh Co Ltd R5C592 Memory Stick Bus Host Adapter (rev 11)

   Subsystem: Sony Corporation Device 900e

   Flags: bus master, medium devsel, latency 32, IRQ 10

   Memory at fc100c00 (32-bit, non-prefetchable) [size=256]

   Capabilities: [80] Power Management version 2

```

I looks for the "Sony COrporation Device 900e" in google but nothing.

So, with this configuration, the MMC and Memory stick do not work (i tried plugging but nothing is recognized) but the firewire seems work. 

Moreover, I find a driver for my ricoh webcam (plug through USB). But i would know if it exists a generic driver for my "ricoh" webcam too.

----------

## MotivatedTea

Sorry, I meant to say "lspvi -v -n". The "-n" gives numerical values. You'll get two hexadecimal numbers separated by a colon.

Camera

I just noticed you have "05ca:183a" on your lsusb output. The PCI numbers will look similar. After googling for "05ca:183a", it looks to me like your webcam is probably supported by the UVC family of webcam drivers. Unfortunately, based on most of the messages on the first page of google results, it also looks like other people are having problems getting it to work properly. That should give you a starting point, though.

Card Reader

I know that Ricoh does make their own card readers. I also know that they weren't very nice about giving any information on them to open-source developers, so for the longest time, Ricoh card readers didn't work under linux, period. End of story.  Finally, someone managed to reverse-engineer some them and started writing drivers. There are now Ricoh card reader drivers in the kernel, so check your kernel configuration for those. (Hint: if you are configuring your kernel with "make menuconfig", then you can press forward-slash (/) to search for keywords.) If your laptop is very new, it's possible your model isn't supported yet. (The laptop I was using has since died, so I haven't had to deal with Ricoh drivers in a few years.) I don't have the same hardware as you, so it's hard for me to troubleshoot. However, it looks like your card reader is a Ricoh model R5C592. There's a thread in the Ubuntu support forum with a supposed fix. (It uses the "setpci" program, which is in sys-apps/pciutils.) Try that out, and look for similar threads online.

In General

Find the numeric ID's of your other devices and google those. That's how I generally figure out what drivers I need under Linux if it's not otherwise obvious. For instance, a while back I had a "Ricoh High Definition Audio" card which was actually an "Intel" HDA card and used Intel drivers. It's unfortunate that you have so much Ricoh hardware. Ricoh seems to me to be a very unfriendly company towards Linux.

----------

## dsp

So, i have this:

```

00:1f.3 0c05: 8086:27da (rev 02)

   Subsystem: 104d:900e

   Flags: medium devsel

   I/O ports at 18a0 [size=32]

   Kernel driver in use: i801_smbus

09:04.0 0607: 1180:0476 (rev ba)

   Subsystem: 104d:900e

   Flags: bus master, medium devsel, latency 168, IRQ 20

   Memory at fc101000 (32-bit, non-prefetchable) [size=4K]

   Bus: primary=09, secondary=0a, subordinate=0d, sec-latency=176

   Memory window 0: 50000000-53fff000 (prefetchable)

   Memory window 1: 54000000-57fff000

   I/O window 0: 00005000-000050ff

   I/O window 1: 00005400-000054ff

   16-bit legacy interface ports at 0001

   Kernel driver in use: yenta_cardbus

09:04.1 0c00: 1180:0832 (rev 04) (prog-if 10 [OHCI])

   Subsystem: 104d:900e

   Flags: bus master, medium devsel, latency 32, IRQ 21

   Memory at fc100000 (32-bit, non-prefetchable) [size=2K]

   Capabilities: [dc] Power Management version 2

   Kernel driver in use: ohci1394

09:04.4 0880: 1180:0592 (rev 11)

   Subsystem: 104d:900e

   Flags: bus master, medium devsel, latency 32, IRQ 10

   Memory at fc100800 (32-bit, non-prefetchable) [size=256]

   Capabilities: [80] Power Management version 2

```

Camera

I read in the net that UVC family manages the "ricoh" webcam. But my issue is that the UVC driver can not load the ricoh firmware. But if the firmware is load the UVC driver manages the webcam very well.

Card Reader

My laptop is a sony TZ21mn (it is not very new around 1-2 years).

I see in the net that they seems to has a MMC ricoh drivers named "MMC_sdricoh". I test it but nothing is recognized.

So, I will test this thread and i will give you a feedback. 

Think you for your support.

----------

## dsp

Card Reader

I try this forum solution but nothing works on my PC.

I don't find any thing in the web for this kind of issue. So, i try to look for...

----------

## MotivatedTea

I found another Ubuntu thread in which someone with a Sony TT laptop says they have most things working with the latest version of the Ubuntu (Karmic). See here:

http://ubuntuforums.org/showthread.php?s=1e7e159dc4e6f486af09837fbd6e3f75&t=1111753

That's not identical to your laptop, but the card reader seems to be the same version. "Karmic" is currently Ubuntu's testing branch, so there's no LiveCD for it. You could try burning the latest Ubuntu LiveCD and booting from that. If your card reader works with it, try to figure out what kernel version it's using and which modules it has loaded, and then see if you can do the same under Linux. It looks like the kernel being used by Karmic is currently 2.6.31, which is in portage but is keyworded. You could perhaps try using that kernel to see if the drivers in it are more up-to-date. One of the posts in that thread (post #77) looks like two modules are in use: sdhci and sdhci_pci. Make sure you are compiling both of those modules. Note that these appear to be generic SDHCI drivers; not Ricoh-specific.

I looked a little more for bugs in other distributions relating to the "Ricoh Co Ltd R5C592 Memory Stick Bus Host Adapter (rev 11)". It looks like some people have started getting it working as of the 2.6.29 kernel, but for SD cards only. As best I can tell, it's a 5-in-1 card reader, but only SD card Linux drivers have been written for it, and only recently.

There is an unresolved Linux kernel bug about the fact that MMC cards aren't yet supported here:

http://bugzilla.kernel.org/show_bug.cgi?id=14083

You might want to monitor that bug from time to time. However, that is just for the MMC support. Officially, SD support should be available for your card reader with the sdhci and sdhci_pci modules.

----------

