Results 1 to 10 of 10

Thread: OpenSUSE and Microchip EXPHID0x25 device on Raon Everun

  1. #1

    Exclamation OpenSUSE and Microchip EXPHID0x25 device on Raon Everun

    Looking for help with linux on my UMPC - Raon Everun

    So far the installation of OpenSUSE 11 finishes with no problems - everithing seems to work OK, except some hardware.

    This device is "built" on a base of AMD Geode LX900 processor, CS5536 Geode companion audio.

    The system works OK, but most needed hardware does not:
    1) Input (mouse, keyboard, touchscreen)
    2) Sound (cs5536 Geode companion audio)
    3) bluetooth
    4) wifi (Marvell SD8686 SDIO card)

    Anyway, I can live without sound, bt and wifi, but without input devices this UMPC becomes a brick with linux. I use external USB keyboard and mouse to operate the device.

    The problem appears to be in the following:
    Input devices (keyboard, mouse, touchscreen) appear to be attached to the Microchip controller, which is a USB device. In System information (in yast) this device is recognized as EXPHID0x25. But it does not seem to be operational (no input, the backlight on keyboard does no work)

    Yast, actually, suggests 3 devices:
    EXPHID0x25
    EXPHID0x25 (dev/input/event3)
    EXPHID0x25 (dev/input/mice)


    Here is the output
    Code:
    kolyanoid@linux-fj2c:~> /usr/sbin/lsusb -s 002:002 -v
    
    Bus 002 Device 002: ID 04d8:010a Microchip Technology, Inc.
    Device Descriptor:
      bLength                18
      bDescriptorType         1
      bcdUSB               2.00
      bDeviceClass            0 (Defined at Interface level)
      bDeviceSubClass         0
      bDeviceProtocol         0
      bMaxPacketSize0         8
      idVendor           0x04d8 Microchip Technology, Inc.
      idProduct          0x010a
      bcdDevice            0.00
      iManufacturer           1
      iProduct                2
      iSerial                 0
      bNumConfigurations      1
      Configuration Descriptor:
        bLength                 9
        bDescriptorType         2
        wTotalLength          166
        bNumInterfaces          6
        bConfigurationValue     1
        iConfiguration          0
        bmAttributes         0xa0
          (Bus Powered)
          Remote Wakeup
        MaxPower              100mA
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        0
          bAlternateSetting       0
          bNumEndpoints           1
          bInterfaceClass         3 Human Interface Device
          bInterfaceSubClass      1 Boot Interface Subclass
          bInterfaceProtocol      1 Keyboard
          iInterface              0
            HID Device Descriptor:
              bLength                 9
              bDescriptorType        33
              bcdHID               1.01
              bCountryCode            0 Not supported
              bNumDescriptors         1
              bDescriptorType        34 Report
              wDescriptorLength      63
             Report Descriptors:
               ** UNAVAILABLE **
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x81  EP 1 IN
            bmAttributes            3
              Transfer Type            Interrupt
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0008  1x 8 bytes
            bInterval              10
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        1
          bAlternateSetting       0
          bNumEndpoints           1
          bInterfaceClass         3 Human Interface Device
          bInterfaceSubClass      1 Boot Interface Subclass
          bInterfaceProtocol      2 Mouse
          iInterface              0
            HID Device Descriptor:
              bLength                 9
              bDescriptorType        33
              bcdHID               1.01
              bCountryCode            0 Not supported
              bNumDescriptors         1
              bDescriptorType        34 Report
              wDescriptorLength      52
             Report Descriptors:
               ** UNAVAILABLE **
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x82  EP 2 IN
            bmAttributes            3
              Transfer Type            Interrupt
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0004  1x 4 bytes
            bInterval              10
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        2
          bAlternateSetting       0
          bNumEndpoints           1
          bInterfaceClass         3 Human Interface Device
          bInterfaceSubClass      1 Boot Interface Subclass
          bInterfaceProtocol      2 Mouse
          iInterface              0
            HID Device Descriptor:
              bLength                 9
              bDescriptorType        33
              bcdHID               1.01
              bCountryCode            0 Not supported
              bNumDescriptors         1
              bDescriptorType        34 Report
              wDescriptorLength      51
             Report Descriptors:
               ** UNAVAILABLE **
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x83  EP 3 IN
            bmAttributes            3
              Transfer Type            Interrupt
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0005  1x 5 bytes
            bInterval              10
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        3
          bAlternateSetting       0
          bNumEndpoints           1
          bInterfaceClass         3 Human Interface Device
          bInterfaceSubClass      1 Boot Interface Subclass
          bInterfaceProtocol      1 Keyboard
          iInterface              0
            HID Device Descriptor:
              bLength                 9
              bDescriptorType        33
              bcdHID               1.01
              bCountryCode            0 Not supported
              bNumDescriptors         1
              bDescriptorType        34 Report
              wDescriptorLength      45
             Report Descriptors:
               ** UNAVAILABLE **
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x84  EP 4 IN
            bmAttributes            3
              Transfer Type            Interrupt
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0008  1x 8 bytes
            bInterval              10
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        4
          bAlternateSetting       0
          bNumEndpoints           1
          bInterfaceClass         3 Human Interface Device
          bInterfaceSubClass      0 No Subclass
          bInterfaceProtocol      0 None
          iInterface              0
            HID Device Descriptor:
              bLength                 9
              bDescriptorType        33
              bcdHID               1.01
              bCountryCode            0 Not supported
              bNumDescriptors         1
              bDescriptorType        34 Report
              wDescriptorLength      52
             Report Descriptors:
               ** UNAVAILABLE **
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x85  EP 5 IN
            bmAttributes            3
              Transfer Type            Interrupt
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0002  1x 2 bytes
            bInterval              10
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        5
          bAlternateSetting       0
          bNumEndpoints           2
          bInterfaceClass         3 Human Interface Device
          bInterfaceSubClass      0 No Subclass
          bInterfaceProtocol      0 None
          iInterface              0
            HID Device Descriptor:
              bLength                 9
              bDescriptorType        33
              bcdHID               1.01
              bCountryCode            0 Not supported
              bNumDescriptors         1
              bDescriptorType        34 Report
              wDescriptorLength      34
             Report Descriptors:
               ** UNAVAILABLE **
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x86  EP 6 IN
            bmAttributes            3
              Transfer Type            Interrupt
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0008  1x 8 bytes
            bInterval              10
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x06  EP 6 OUT
            bmAttributes            3
              Transfer Type            Interrupt
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0008  1x 8 bytes
            bInterval              10
    The thing is that the input enables after some time (from 30 seconds to n/d). Average is about 40 minutes. When it enables - everything starts to work - the keyboard with backlight, mouse and even touchscreen (not calibrated, however).

    This behavior is common for ANY linux distro i tried (OpenSUSE, Kubutu, Knoppix 3.7, Backtrack 2). The ONLY exception is Mandriva - the keyboard and mouse work absolutely OK right from the start. But, because I don't like mandriva - I am here with my problem

    This problem was once solved by a person (great thanks to him!) who runs Debian on this device. Here is a quote from umpcportal.com (take a look on a kernel patch comments - this seems to be a clue)

  2. #2

    Default Re: OpenSUSE and Microchip EXPHID0x25 device on Raon Everun

    Quote Originally Posted by grib
    I had to patch the usbhid driver module to execute some "quirk" code on initializing the device. Appended is a patch against linux-2.6.23.

    ------

    Here's the kernel patch:


    diff -u -r linux-2.6.23/drivers/hid/usbhid/hid-core.c linux-2.6/drivers/hid/usbhid/hid-core.c
    --- linux-2.6.23/drivers/hid/usbhid/hid-core.c 2007-10-09 16:31:38.000000000 -0400
    +++ linux-2.6/drivers/hid/usbhid/hid-core.c 2007-10-22 15:01:59.000000000 -0400
    @@ -664,6 +664,38 @@
    kfree(buf);
    }

    +
    +/*
    + * Sending HID_REQ_SET_REPORT changes the operation mode of the
    + * Microchip controller in the Raon Everun to "operational". Without
    + * this, the keyboard/mouse/touchpad will not send any events
    + */
    +static void hid_fixup_microchip_exphid(struct usb_device *dev, int ifnum)
    +{
    + int result;
    + char *buf = kmalloc(1, GFP_KERNEL);
    +
    + warn("exphid: Entered hid_fixup_microchip_exphid");
    + if (!buf)
    + return;
    +
    + buf[0] = 0;
    +
    + /* only do this for interface 0, the keyboard */
    + if (ifnum == 0) {
    + warn("exphid: sending control message 1");
    + result = usb_control_msg(dev, usb_sndctrlpipe(dev, 0),
    + HID_REQ_SET_REPORT,
    + USB_TYPE_CLASS | USB_RECIP_INTERFACE,
    + 0x0200, 0x00, buf, 1, USB_CTRL_GET_TIMEOUT);
    +
    + if (result < 0)
    + err_hid("%s failed: %d\n", __func__, result);
    + }
    +
    + kfree(buf);
    +}
    +
    static struct hid_device *usb_hid_configure(struct usb_interface *intf)
    {
    struct usb_host_interface *interface = intf->cur_altsetting;
    @@ -957,6 +989,10 @@
    hid_fixup_sony_ps3_controller(interface_to_usbdev(intf),
    intf->cur_altsetting->desc.bInterfaceNumber);

    + if (hid->quirks & HID_QUIRK_MICROCHIP_EXPHID)
    + hid_fixup_microchip_exphid(interface_to_usbdev(intf),
    + intf->cur_altsetting->desc.bInterfaceNumber);
    +
    printk(KERN_INFO);

    if (hid->claimed & HID_CLAIMED_INPUT)
    diff -u -r linux-2.6.23/drivers/hid/usbhid/hid-quirks.c linux-2.6/drivers/hid/usbhid/hid-quirks.c
    --- linux-2.6.23/drivers/hid/usbhid/hid-quirks.c 2007-10-09 16:31:38.000000000 -0400
    +++ linux-2.6/drivers/hid/usbhid/hid-quirks.c 2007-10-22 13:55:43.000000000 -0400
    @@ -280,6 +280,9 @@
    #define USB_DEVICE_ID_MGE_UPS 0xffff
    #define USB_DEVICE_ID_MGE_UPS1 0x0001

    +#define USB_VENDOR_ID_MICROCHIP 0x04d8
    +#define USB_DEVICE_ID_MICROCHIP_EXPHID 0x010a
    +
    #define USB_VENDOR_ID_MICROSOFT 0x045e
    #define USB_DEVICE_ID_SIDEWINDER_GV 0x003b

    @@ -373,6 +376,7 @@
    { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_DINOVO_EDGE, HID_QUIRK_DUPLICATE_USAGES },

    { USB_VENDOR_ID_BELKIN, USB_DEVICE_ID_FLIP_KVM, HID_QUIRK_HIDDEV },
    + { USB_VENDOR_ID_MICROCHIP, USB_DEVICE_ID_MICROCHIP_EXPHID, HID_QUIRK_MICROCHIP_EXPHID },
    { USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_SIDEWINDER_GV, HID_QUIRK_HIDINPUT },

    { USB_VENDOR_ID_AIPTEK, USB_DEVICE_ID_AIPTEK_01, HID_QUIRK_IGNORE },
    diff -u -r linux-2.6.23/include/linux/hid.h linux-2.6/include/linux/hid.h
    --- linux-2.6.23/include/linux/hid.h 2007-10-09 16:31:38.000000000 -0400
    +++ linux-2.6/include/linux/hid.h 2007-10-22 14:19:42.000000000 -0400
    @@ -276,6 +276,7 @@
    #define HID_QUIRK_HIDINPUT 0x00200000
    #define HID_QUIRK_LOGITECH_IGNORE_DOUBLED_WHEEL 0x00400000
    #define HID_QUIRK_LOGITECH_EXPANDED_KEYMAP 0x00800000
    +#define HID_QUIRK_MICROCHIP_EXPHID 0x01000000

    /*
    * Separate quirks for runtime report descriptor fixup
    This is a link to the whole thread on the problems of linusx on Raon Everun
    Forum - Raon Digital Everun - Linux on Everun S66HS: current status - UMPCPortal.com


    I tried to apply this patch manually (due to version mismatch) to my kernel and compile it.
    Everything was fine, I booted with this new patched kernel, but the problem was not solved. Actually, the exphid0x25 device seems to become operational, since the keyboard backlight started to work properly (turning on on button press and turning of after a few seconds), but still no input!
    The things got worse after some time (approx 40 minutes, again) - the exphid0x25 seemed to turn off again, because the keyboard backlight stopped working.

    So, this is the story. What shall I do now? Why the kernel patch does not work for me?

    I really need your help! I can't switch to linux without input - this is the only thing that holds me on XP


    P.S.
    When compiling the kernel I used the current kernel's config file from /boot/

    This is a manual kernel configuration, suggested by the author of the above kernel patch:
    * Kernel configuration

    I like building custom kernels with everything compiled in. Probably
    because I started using Linux in 1993 and I still don't really trust
    these newfangled 'modules'. Anyway here are the customizations of
    note for the Everun:

    The easy ones:

    - Processor type: AMD Geode GX3

    - ATA driver: CS55xx are the ATA drivers for Geode processors; I enabled them
    all just to be sure.

    - Bus support: there is an ISA bridge, so enable ISA bus support.

    - Display: VESA framebuffer works fine, there's also a Geode
    framebuffer but I'm not sure it's much of an advantage.

    - Audio: ALSA CS5535/5536 Audio driver is built in. I wasn't able
    to get this working right away (it spewed tons of errors) so I
    disabled it for the moment.

    - Character devices: Don't forget to enable "CS5535 GPIO
    Companion"... I have a sneaky feeling it will be important

    - USB: Enable EHCI and OHCI host controllers and "full HID".

    - Bluetooth: Enable hci_uart module for the built-in BT over the
    internal serial port.

    - power management: enable ACPI and all the relevant-looking modules

    And not-so-easy:

    - Wifi: According to a thread on umpcportal, the Everun's Wifi
    chipset is a Marvell SD8686 SDIO card. The Marvell 8xxx chipsets
    have a Linux driver in the main kernel, but it doesn't work for
    the SDIO version.

    - lspci shows a "Ricoh Co Ltd R5C822 SD/SDIO/MMC/MS/MSPro Host
    Adapter". That's where our wifi is hanging. Since there aren't
    any SD/MMC physical slots available on the machine there's not
    much point in enabling the driver.
    P.S.2
    Sorry for such a huge post...

  3. #3

    Default Re: OpenSUSE and Microchip EXPHID0x25 device on Raon Everun

    Anybody?

    If you don't know the answer, may be you know a better place on the net, where I can ask it?

  4. #4
    Join Date
    Mar 2008
    Location
    Phuket, Thailand
    Posts
    27,109
    Blog Entries
    40

    Default Re: OpenSUSE and Microchip EXPHID0x25 device on Raon Everun

    Quote Originally Posted by Kolyanoid View Post
    The system works OK, but most needed hardware does not:
    1) Input (mouse, keyboard, touchscreen)
    2) Sound (cs5536 Geode companion audio)
    I typically send users to the audio troubleshooting guide in order to take a first cut at sorting their audio problems. However a prerequisite is that they have a functioning mouse and keyboard. Are there any 'legacy' settings in your BIOS that you can set for mouse and keyboard to get them functioning.

    Reference your audio, the oepnSUSE audio troubleshooting guide can be found here: SDB:AudioTroubleshooting - openSUSE Note that guide assumes a nominal kernel, so if you compiled your own, a lot of the guide will not be applicable.

  5. #5

    Default Re: OpenSUSE and Microchip EXPHID0x25 device on Raon Everun

    Thanks for reply!
    . Are there any 'legacy' settings in your BIOS that you can set for mouse and keyboard to get them functioning.
    Unfortunately, no... There are no setting for keyboard and mouse.
    By the way, while system is booting the keyboard and mouse seem to be functional - navigation in BIOS works, GRUB menu navigation, Acronis True Image usage with keyboard and mouse.

    They all disable just when the Linux starts to boot and enables only after huge random amount of time (well, you have heard the rest of the story )

    P.S.
    When compiling the kernel, I noticed one interesting option. It switches the keyboard and mouse and to the "start up" state.
    I will try to compile the kernel, may be this will work (not a solution, but walkaround)...

    P.S.2
    Thanks for the sound guide, I will try it as soon as I tackle my input problems!
    By the way, the soundcard is recogised in Yast and Alsa, the proper kernel module is used. But it gives tons of errors in dmesg... I will try to solve it, but a bit later...

  6. #6
    Join Date
    Mar 2008
    Location
    Phuket, Thailand
    Posts
    27,109
    Blog Entries
    40

    Default Re: OpenSUSE and Microchip EXPHID0x25 device on Raon Everun

    Quote Originally Posted by Kolyanoid View Post
    By the way, the soundcard is recogised in Yast and Alsa, the proper kernel module is used. But it gives tons of errors in dmesg... I will try to solve it, but a bit later...
    Please also confirm you conducted an md5sum chieck on your openSUSE CD/DVD comparing:
    a. md5sum listed on openSUSE website for the ISO file against,
    b. md5sum on your PC hard drive after downloading the ISO against,
    c. md5sum of the data the CD/DVD which can be conducted by creating ISO file from CD/DVD.

    Alternatively, just conduct a media check on the CD/DVD which is one of the Fx options when one inserts the CD/DVD for initial installation.

  7. #7

    Default Re: OpenSUSE and Microchip EXPHID0x25 device on Raon Everun

    I am 100% sure, the installation of broken files is not the reason for this problem as:
    1) Other people experience exactly the same problem
    2) In other distros the problem is the same
    3) OpenSUSE 11 Alpha 1 and 3, Beta 1, 2 and 3 and the final release - all the same.

  8. #8
    Join Date
    Mar 2008
    Location
    Phuket, Thailand
    Posts
    27,109
    Blog Entries
    40

    Default Re: OpenSUSE and Microchip EXPHID0x25 device on Raon Everun

    Quote Originally Posted by Kolyanoid View Post
    I am 100% sure, the installation of broken files is not the reason for this problem as...
    Perhaps not, but there is a possibility you introduced additional problems as a result of a failure to ensure the md5sums were good, decreasing even further the possibility of your solving this riddle.

    Why not put the boot CD/DVD in your drive, reboot, and then select the Fx menu option to do a CD/DVD media check? It will remove that as a possibility of there being additional errors, or it will point out that you have even more problems that need be fixed.

  9. #9
    Join Date
    Jun 2008
    Location
    Oklahoma, US
    Posts
    822

    Default Re: OpenSUSE and Microchip EXPHID0x25 device on Raon Everun

    Kolyanoid wrote:

    >
    > Anybody?
    >
    > If you don't know the answer, may be you know a better place on the
    > net, where I can ask it?
    >
    >


    I read the referenced site and about the issues with 'starting' the
    keyboard/mouse devices. (and the rest of the posts... strange answers)

    You've got a perfect installation, that's definite, just that the chipset used
    in the UMPC you have is so very new that the kernel developers haven't had a
    chance to create drivers for them. I searched the kernel source, and that
    particular Microchip device does not exist yet.

    You need to monitor that conversation on umpcsite.com, the user there has a
    working driver, written for 2.6.23 kernel, while the new opensuse 11.0 kernel
    is 2.6.25. I know you said you tried manually patching it and installing the
    new kernel.

    After installing the kernel-sources, as root, cd to /usr/src/linux/
    then run

    make cloneconfig

    This will set up for duplicating the exact current setup.

    Apply the patch, by hand, or by working with the patch program, it can handle
    some differences if you give it your 'ok' (it's usually pretty conservative
    to prevent weird things happening)

    make
    make install
    make modules_install <-- used to have to do that, think they merged it
    into 'make install'

    I know it's usually done by 'make install', but then I always run 'mkinitrd'
    to force the system to update the boot ramdrive with new modules and drivers.

    I tinkered with the patch code a little too, it looks to be quite possible to
    write a small utility program to 'kickstart' the keyboard/mouse devices
    anytime after boot too. The code is really only sending a single byte of
    data to the main device of the Microchip.

    Keep looking though, 'bleeding edge' equipment is often slow to start getting
    support, but as prices come down and interest rises, support and drivers come
    quickly and can change often.

    Take Care,

    Loni

    (enjoy the Raon... I've been drooling over them myself too, {sigh} no funds)


    --
    L R Nix
    lornix@lornix.com

  10. #10

    Default Re: OpenSUSE and Microchip EXPHID0x25 device on Raon Everun

    Thanks for reply, lornix!

    After installing the kernel-sources, as root, cd to /usr/src/linux/
    then run
    Thanks, I will try this one!
    To tell you the truth, I use OS11 installation on my home PC to compile the kernel and build the RPM (as for .config file - I used the one from the UMPC installation) . There was not enough space on UMPC to compile it and it's too slow... But I think, I will try again - i have some ideas

    I tinkered with the patch code a little too, it looks to be quite possible to
    write a small utility program to 'kickstart' the keyboard/mouse devices
    anytime after boot too. The code is really only sending a single byte of
    data to the main device of the Microchip.
    Thats true! Still I am looking for console command to send a message to USB device...
    Keep looking though, 'bleeding edge' equipment is often slow to start getting
    support, but as prices come down and interest rises, support and drivers come
    quickly and can change often.
    There are more "bleeding edge" ideas in this UMPC Most onboard devices are supported by latest kernels, even the SDIO WLAN card and sound card. Unfortunately, it requires enourmous efforts to make them work.

    Hope the situation becomes better in future, before this UMPC becomes "old"

    Perhaps not, but there is a possibility you introduced additional problems as a result of a failure to ensure the md5sums were good, decreasing even further the possibility of your solving this riddle.

    Why not put the boot CD/DVD in your drive, reboot, and then select the Fx menu option to do a CD/DVD media check? It will remove that as a possibility of there being additional errors, or it will point out that you have even more problems that need be fixed.
    I checked it - everything is ok as I expected

    P.S.1
    The Sony VAIO UX UMPC now works with almost no problems with linux. Unfortunately, this device is no longer manufactured

    P.S.2
    On latest Ubuntu the sound card is reported to work well.

    (enjoy the Raon... I've been drooling over them myself too, {sigh} no funds)
    Thanks! It is a really nice device. Rather slow - too slow for DVD video or Youtube (flash vidoe), but runs office applications fine. Enough for my educational needs.

    Nickolai Kozlov

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •