Page 1 of 2 12 LastLast
Results 1 to 10 of 14

Thread: External ThinkPad keyboard with UltraNav (trackpoint and touchpad)

  1. #1
    Join Date
    Apr 2008
    Location
    Linköping, Sweden
    Beans
    3
    Distro
    Ubuntu 7.10 Gutsy Gibbon

    Question External ThinkPad keyboard with UltraNav (trackpoint and touchpad)

    I have an IBM/Lenovo ThinkPad external USB keyboard (with UltraNav - a combined trackpoint and touchpad) hooked up to my desktop machine, because I like their keyboards and am addicted to the trackpoint.

    Some of the configuration information on the Ubuntu forums referring to UltraNav/trackpoints works for me, so I can use it for scrolling and stuff like that.

    Unfortunately I'm unable to configure the hardware. The trackpoint driver and configuration utilities only seem to be able to talk to PS/2 interface connected trackpoints.

    Has anyone managed to work out how to configure a USB-connected trackpoint? Here's the lsusb output showing the device:
    Code:
    Bus 004 Device 005: ID 06cb:0009 Synaptics, Inc. Composite TouchPad and TrackPoint
    Device Descriptor:
      bLength                18
      bDescriptorType         1
      bcdUSB               1.10
      bDeviceClass            0 (Defined at Interface level)
      bDeviceSubClass         0 
      bDeviceProtocol         0 
      bMaxPacketSize0         8
      idVendor           0x06cb Synaptics, Inc.
      idProduct          0x0009 Composite TouchPad and TrackPoint
      bcdDevice            0.20
      iManufacturer           1 Synaptics Inc.
      iProduct                2 Composite TouchPad / TrackPoint
      iSerial                 0 
      bNumConfigurations      1
      Configuration Descriptor:
        bLength                 9
        bDescriptorType         2
        wTotalLength           91
        bNumInterfaces          2
        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 Devices
          bInterfaceSubClass      1 Boot Interface Subclass
          bInterfaceProtocol      2 Mouse
          iInterface              3 Rel
            HID Device Descriptor:
              bLength                 9
              bDescriptorType        33
              bcdHID               1.00
              bCountryCode            0 Not supported
              bNumDescriptors         1
              bDescriptorType        34 Report
              wDescriptorLength      50
             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     0x0003  1x 3 bytes
            bInterval              10
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        0
          bAlternateSetting       1
          bNumEndpoints           1
          bInterfaceClass         0 (Defined at Interface level)
          bInterfaceSubClass      0 
          bInterfaceProtocol      0 
          iInterface              4 Abs
          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 Devices
          bInterfaceSubClass      1 Boot Interface Subclass
          bInterfaceProtocol      2 Mouse
          iInterface              3 Rel
            HID Device Descriptor:
              bLength                 9
              bDescriptorType        33
              bcdHID               1.00
              bCountryCode            0 Not supported
              bNumDescriptors         1
              bDescriptorType        34 Report
              wDescriptorLength      50
             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     0x0003  1x 3 bytes
            bInterval              10
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        1
          bAlternateSetting       1
          bNumEndpoints           1
          bInterfaceClass         0 (Defined at Interface level)
          bInterfaceSubClass      0 
          bInterfaceProtocol      0 
          iInterface              4 Abs
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x82  EP 2 IN
            bmAttributes            3
              Transfer Type            Interrupt
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0008  1x 8 bytes
            bInterval              10
    Device Status:     0x0000
      (Bus Powered)
    
    Bus 004 Device 004: ID 04b3:3018 IBM Corp. UltraNav Keyboard
    Device Descriptor:
      bLength                18
      bDescriptorType         1
      bcdUSB               1.10
      bDeviceClass            0 (Defined at Interface level)
      bDeviceSubClass         0 
      bDeviceProtocol         0 
      bMaxPacketSize0         8
      idVendor           0x04b3 IBM Corp.
      idProduct          0x3018 UltraNav Keyboard
      bcdDevice            1.16
      iManufacturer           1 Lite-On Tech
      iProduct                2 IBM USB Keyboard with UltraNav
      iSerial                 0 
      bNumConfigurations      1
      Configuration Descriptor:
        bLength                 9
        bDescriptorType         2
        wTotalLength           59
        bNumInterfaces          2
        bConfigurationValue     1
        iConfiguration          0 
        bmAttributes         0xa0
          (Bus Powered)
          Remote Wakeup
        MaxPower               70mA
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        0
          bAlternateSetting       0
          bNumEndpoints           1
          bInterfaceClass         3 Human Interface Devices
          bInterfaceSubClass      1 Boot Interface Subclass
          bInterfaceProtocol      1 Keyboard
          iInterface              0 
            HID Device Descriptor:
              bLength                 9
              bDescriptorType        33
              bcdHID               1.10
              bCountryCode            0 Not supported
              bNumDescriptors         1
              bDescriptorType        34 Report
              wDescriptorLength      65
             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              24
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        1
          bAlternateSetting       0
          bNumEndpoints           1
          bInterfaceClass         3 Human Interface Devices
          bInterfaceSubClass      0 No Subclass
          bInterfaceProtocol      0 None
          iInterface              0 
            HID Device Descriptor:
              bLength                 9
              bDescriptorType        33
              bcdHID               1.10
              bCountryCode            0 Not supported
              bNumDescriptors         1
              bDescriptorType        34 Report
              wDescriptorLength      85
             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     0x0005  1x 5 bytes
            bInterval              48
    Device Status:     0x0000
      (Bus Powered)
    
    Bus 004 Device 003: ID 04b3:3016 IBM Corp. UltraNav Keyboard Hub
    Device Descriptor:
      bLength                18
      bDescriptorType         1
      bcdUSB               1.10
      bDeviceClass            9 Hub
      bDeviceSubClass         0 Unused
      bDeviceProtocol         0 Full speed hub
      bMaxPacketSize0         8
      idVendor           0x04b3 IBM Corp.
      idProduct          0x3016 UltraNav Keyboard Hub
      bcdDevice            2.01
      iManufacturer           1 Lite-On Tech
      iProduct                2 USB 1.1 2 port downstream low-power hub
      iSerial                 0 
      bNumConfigurations      1
      Configuration Descriptor:
        bLength                 9
        bDescriptorType         2
        wTotalLength           25
        bNumInterfaces          1
        bConfigurationValue     1
        iConfiguration          0 
        bmAttributes         0xa0
          (Bus Powered)
          Remote Wakeup
        MaxPower               40mA
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        0
          bAlternateSetting       0
          bNumEndpoints           1
          bInterfaceClass         9 Hub
          bInterfaceSubClass      0 Unused
          bInterfaceProtocol      0 Full speed hub
          iInterface              0 
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x81  EP 1 IN
            bmAttributes            3
              Transfer Type            Interrupt
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0001  1x 1 bytes
            bInterval             255
    Hub Descriptor:
      bLength               9
      bDescriptorType      41
      nNbrPorts             4
      wHubCharacteristic 0x0009
        Per-port power switching
        Per-port overcurrent protection
      bPwrOn2PwrGood       50 * 2 milli seconds
      bHubContrCurrent    100 milli Ampere
      DeviceRemovable    0x18
      PortPwrCtrlMask    0xff
     Hub Port Status:
       Port 1: 0000.0100 power
       Port 2: 0000.0100 power
       Port 3: 0000.0303 lowspeed power enable connect
       Port 4: 0000.0303 lowspeed power enable connect
    Device Status:     0x0000
      (Bus Powered)
    
    Bus 004 Device 001: ID 0000:0000  
    Device Descriptor:
      bLength                18
      bDescriptorType         1
      bcdUSB               1.10
      bDeviceClass            9 Hub
      bDeviceSubClass         0 Unused
      bDeviceProtocol         0 Full speed hub
      bMaxPacketSize0        64
      idVendor           0x0000 
      idProduct          0x0000 
      bcdDevice            2.06
      iManufacturer           3 Linux 2.6.22-14-generic uhci_hcd
      iProduct                2 UHCI Host Controller
      iSerial                 1 0000:00:1d.0
      bNumConfigurations      1
      Configuration Descriptor:
        bLength                 9
        bDescriptorType         2
        wTotalLength           25
        bNumInterfaces          1
        bConfigurationValue     1
        iConfiguration          0 
        bmAttributes         0xe0
          Self Powered
          Remote Wakeup
        MaxPower                0mA
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        0
          bAlternateSetting       0
          bNumEndpoints           1
          bInterfaceClass         9 Hub
          bInterfaceSubClass      0 Unused
          bInterfaceProtocol      0 Full speed hub
          iInterface              0 
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x81  EP 1 IN
            bmAttributes            3
              Transfer Type            Interrupt
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0002  1x 2 bytes
            bInterval             255
    Hub Descriptor:
      bLength               9
      bDescriptorType      41
      nNbrPorts             2
      wHubCharacteristic 0x000a
        No power switching (usb 1.0)
        Per-port overcurrent protection
      bPwrOn2PwrGood        1 * 2 milli seconds
      bHubContrCurrent      0 milli Ampere
      DeviceRemovable    0x00
      PortPwrCtrlMask    0xff
     Hub Port Status:
       Port 1: 0000.0100 power
       Port 2: 0000.0103 power enable connect
    Device Status:     0x0003
      Self Powered
      Remote Wakeup Enabled

  2. #2
    Join Date
    Jan 2007
    Beans
    3

    Re: External ThinkPad keyboard with UltraNav (trackpoint and touchpad)

    I have the same keyboard and was able to get it working under Hardy Heron using the Jan Steinhoff's USB touchpad driver available here. Hopefully this will be included with the Ubuntu distribution at some point.

    The driver compiles and installs cleanly under Hardy. The xorg synaptics driver works correctly after the module has been loaded. You can use this simple init script, which I named /etc/init.d/synaptics-usb, to automatically load the module:

    Code:
    #!/bin/sh
    
    PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
    test -x /usr/local/sbin/synaptics-usb || exit 0
    . /lib/lsb/init-functions
    
    case "$1" in
            start)
                    log_begin_msg "Loading synaptics-usb driver..."
                    modprobe synaptics-usb
                    status=$?
                    log_end_msg $status
                    if [ $status -ne 0 ]; then
                            exit $status
                    fi
                    synaptics-usb rebind_to synaptics-usb
            ;;
            stop)
                    log_begin_msg "Stopping synaptics-usb driver..."
                    synaptics-usb rebind_to usbhid
                    status=$?
                    log_end_msg $status
                    if [ $status -ne 0 ]; then
                            exit $status
                    fi
            ;;
            restart|reload|force-reload)
            ;;
            *)
                    echo "Usage: $0 {start|stop}"
            ;;
    esac
    
    exit 0
    Then perform the following commands to allow the init script to be run on every boot:
    chmod +x /etc/init.d/synaptics-usb
    cd /etc/rc2.d
    sudo ln -s ../init.d/synaptics-usb S09synaptics-usb
    Last edited by Dzung Pham; May 5th, 2009 at 07:39 PM. Reason: Added chmod to enable execute permissions

  3. #3
    Join Date
    Apr 2008
    Location
    Linköping, Sweden
    Beans
    3
    Distro
    Ubuntu 7.10 Gutsy Gibbon

    Re: External ThinkPad keyboard with UltraNav (trackpoint and touchpad)

    Quote Originally Posted by Dzung Pham View Post
    I have the same keyboard and was able to get it working under Hardy Heron using the Jan Steinhoff's USB touchpad driver available here. Hopefully this will be included with the Ubuntu distribution at some point.
    Thanks for the info, that looks useful for making the touchpad part of the keyboard work properly.

    Unfortunately I never use the touchpad, I prefer the trackpoint and that doesn't seem to be supported by the driver.

    I'll get in touch with Jan Steinhoff and see if there's any chance of trackpoint support in the future.

    Kevin

  4. #4
    Join Date
    Jan 2007
    Beans
    3

    Re: External ThinkPad keyboard with UltraNav (trackpoint and touchpad)

    My trackpoint works using the standard mouse driver, including scrolling with the center button. Here's my xorg.conf file:

    Code:
    # xorg.conf (X.Org X Window System server configuration file)
    #
    # This file was generated by dexconf, the Debian X Configuration tool, using
    # values from the debconf database.
    #
    # Edit this file with caution, and see the xorg.conf manual page.
    # (Type "man xorg.conf" at the shell prompt.)
    #
    # This file is automatically updated on xserver-xorg package upgrades *only*
    # if it has not been modified since the last upgrade of the xserver-xorg
    # package.
    #
    # If you have edited this file but would like it to be automatically updated
    # again, run the following command:
    #   sudo dpkg-reconfigure -phigh xserver-xorg
    
    Section "InputDevice"
            Identifier      "Generic Keyboard"
            Driver          "kbd"
            Option          "XkbRules"      "xorg"
            Option          "XkbModel"      "pc105"
            Option          "XkbLayout"     "us"
    EndSection
    
    Section "InputDevice"
            Identifier      "Configured Mouse"
            Driver          "mouse"
            Option          "Device" "/dev/input/mouse1"
            Option          "CorePointer"
    EndSection
    
    Section "InputDevice"
            Identifier      "Synaptics Touchpad"
            Driver          "synaptics"
            Option          "SendCoreEvents" "true"
            Option          "Device" "/dev/input/mouse2"
            Option          "Protocol" "auto-dev"
            Option          "SHMConfig" "on"
            Option          "VertScrollDelta" "110"
            Option          "HorizScrollDelta" "130"
            Option          "VertEdgeScroll" "1"
            Option          "HorizEdgeScroll" "1"
            Option          "RTCornerButton" "0"
            Option          "RBCornerButton" "0"
    EndSection
    
    Section "InputDevice"
            Identifier      "Trackpoint"
            Driver          "mouse"
            Option          "SendCoreEvents" "true"
            Option          "Device" "/dev/input/mouse3"
            Option          "Protocol" "ImPS/2"
            Option          "ZAxisMapping" "4 5"
            Option          "Emulate3Buttons" "true"
            Option          "EmulateWheel" "true"
            Option          "EmulateWheelButton" "2"
    EndSection
    
    
    Section "Device"
            Identifier      "Configured Video Device"
            Driver          "fglrx"
    EndSection
    
    Section "Monitor"
            Identifier      "Configured Monitor"
    EndSection
    
    Section "Screen"
            Identifier      "Default Screen"
            Monitor         "Configured Monitor"
            Device          "Configured Video Device"
            Defaultdepth    24
    EndSection
    
    Section "ServerLayout"
            Identifier      "Default Layout"
            screen          "Default Screen"
            InputDevice     "Generic Keyboard"
            InputDevice     "Configured Mouse"
            InputDevice     "Synaptics Touchpad"
            InputDevice     "Trackpoint"
    EndSection
    
    Section "Module"
            Load            "glx"
    EndSection
    The only thing I had to figure out was which mouse device was associated with the trackpoint. You can do this by cat /dev/input/mouse1, mouse2, etc., and seeing which one has an output when you move the trackpoint. Alternatively, you can check list your /proc/bus/input/devices file. Here is the relevant portion from mine.
    Code:
    I: Bus=0003 Vendor=06cb Product=0009 Version=0100
    N: Name="Synaptics Inc. Composite TouchPad / TrackPoint"
    P: Phys=usb-0000:00:1d.2-1.4/input1
    S: Sysfs=/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1.4/3-1.4:1.1/input/input8
    U: Uniq=
    H: Handlers=mouse3 event8
    B: EV=17
    B: KEY=70000 0 0 0 0
    B: REL=3
    B: MSC=10
    
    I: Bus=0003 Vendor=06cb Product=0009 Version=0020
    N: Name="Synaptics USB touchpad"
    P: Phys=usb-0000:00:1d.2-1.4/input0
    S: Sysfs=/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1.4/3-1.4:1.0/input/input9
    U: Uniq=
    H: Handlers=mouse2 event7
    B: EV=b
    B: KEY=6420 30000 0 0 0 0
    B: ABS=11000003

  5. #5
    Join Date
    Apr 2008
    Location
    Linköping, Sweden
    Beans
    3
    Distro
    Ubuntu 7.10 Gutsy Gibbon

    Re: External ThinkPad keyboard with UltraNav (trackpoint and touchpad)

    Quote Originally Posted by Dzung Pham View Post
    My trackpoint works using the standard mouse driver, including scrolling with the center button. Here's my xorg.conf file:
    I'm doing that already. The touchpad also works using the standard driver. The difference is that a specific driver gives you more control over the device (such as setting the sensitivity of the touchpoint, and scrolling).

    One issue with the standard mouse driver for the trackpoint is calibration, it quite often seems to start drifting in some direction.

    See http://www.thinkwiki.org/wiki/How_to...the_TrackPoint for more information on the configuration options available (if it's a PS/2 trackpoint).

  6. #6
    Join Date
    May 2007
    Beans
    360
    Distro
    Xubuntu

    Re: External ThinkPad keyboard with UltraNav (trackpoint and touchpad)

    I can't help but it might be useful to know that I and three other people use external ThinkPad keyboards on a total of six machines with no problem under Feisty, Gutsy, and then Hardy

    Sorry for your difficulties.

    Wonderful keyboards though.

  7. #7
    Join Date
    Jan 2007
    Beans
    3

    Re: External ThinkPad keyboard with UltraNav (trackpoint and touchpad)

    Here are updated instructions for getting things working in Intrepid 8.10. Input devices are no longer supposed to be in xorg.conf so you need to configure using Hal. I still need to use Jan's synaptics driver.

    First run 'lshal' to look for the Synaptics devices. A lot of devices will scroll through but the take note of the relevant ones:

    Code:
    udi = '/org/freedesktop/Hal/devices/usb_device_6cb_9_noserial_if1_logicaldev_input'
      info.capabilities = {'input', 'input.mouse'} (string list)
      info.category = 'input'  (string)
      info.parent = '/org/freedesktop/Hal/devices/usb_device_6cb_9_noserial_if1'  (string)
      info.product = 'Synaptics Inc. Composite TouchPad / TrackPoint'  (string)
      info.subsystem = 'input'  (string)
      info.udi = '/org/freedesktop/Hal/devices/usb_device_6cb_9_noserial_if1_logicaldev_input'  (string)
      input.device = '/dev/input/event7'  (string)
      input.originating_device = '/org/freedesktop/Hal/devices/usb_device_6cb_9_noserial_if1'  (string)
      input.product = 'Synaptics Inc. Composite TouchPad / TrackPoint'  (string)
      input.x11_driver = 'evdev'  (string)
      linux.device_file = '/dev/input/event7'  (string)
      linux.hotplug_type = 2  (0x2)  (int)
      linux.subsystem = 'input'  (string)
      linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1.4/3-1.4:1.1/input/input7/event7'  (string)
    
    udi = '/org/freedesktop/Hal/devices/usb_device_6cb_9_noserial_if0_logicaldev_input'
      info.capabilities = {'input', 'input.mouse'} (string list)
      info.category = 'input'  (string)
      info.parent = '/org/freedesktop/Hal/devices/usb_device_6cb_9_noserial_if0'  (string)
      info.product = 'Synaptics Inc. Composite TouchPad / TrackPoint'  (string)
      info.subsystem = 'input'  (string)
      info.udi = '/org/freedesktop/Hal/devices/usb_device_6cb_9_noserial_if0_logicaldev_input'  (string)
      input.device = '/dev/input/event6'  (string)
      input.originating_device = '/org/freedesktop/Hal/devices/usb_device_6cb_9_noserial_if0'  (string)
      input.product = 'Synaptics Inc. Composite TouchPad / TrackPoint'  (string)
      input.x11_driver = 'evdev'  (string)
      linux.device_file = '/dev/input/event6'  (string)
      linux.hotplug_type = 2  (0x2)  (int)
      linux.subsystem = 'input'  (string)
      linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1.4/3-1.4:1.0/input/input10/event6'  (string)
    One of these is the trackpoint, the other is the touchpad. On mine, the touchpad was the second device. The key is determining the udi so you can set the options. Create a file /etc/hal/fdi/policy/touchpad.fdi that looks something like this.

    Code:
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <deviceinfo version="0.2">
      <device>
        <match key="info.udi" string="/org/freedesktop/Hal/devices/usb_device_6cb_9_noserial_if0_logicaldev_input">
           <merge key="input.x11_driver" type="string">synaptics</merge>
           <merge key="input.x11_options.SHMConfig" type="string">True</merge>
           <merge key="input.x11_options.HorizEdgeScroll" type="string">1</merge>
           <merge key="input.x11_options.VertEdgeScroll" type="string">1</merge>
           <merge key="input.x11_options.MinSpeed" type="string">0.1</merge>
           <merge key="input.x11_options.MaxSpeed" type="string">1.0</merge>
           <merge key="input.x11_options.AccelFactor" type="string">0.002</merge>
           <merge key="input.x11_options.EdgeMotionMinSpeed" type="string">5</merge>
           <merge key="input.x11_options.EdgeMotionMaxSpeed" type="string">10</merge>
        </match>
      </device>
    </deviceinfo>
    Reboot and if the synaptics-usb driver has been loaded, then all should be working properly, including using synclient to customize settings.
    Last edited by Dzung Pham; February 8th, 2009 at 04:39 AM.

  8. #8
    Join Date
    Feb 2009
    Beans
    7

    Re: External ThinkPad keyboard with UltraNav (trackpoint and touchpad)

    Quote Originally Posted by Dzung Pham View Post
    Here are updated instructions for getting things working in Intrepid 8.10. Input devices are no longer supposed to be in xorg.conf so you need to configure using Hal. I still need to use Jan's synaptics driver.

    First run 'lshal' to look for the Synaptics devices. A lot of devices will scroll through but the take note of the relevant ones:

    Code:
    udi = '/org/freedesktop/Hal/devices/usb_device_6cb_9_noserial_if1_logicaldev_input'
      info.capabilities = {'input', 'input.mouse'} (string list)
      info.category = 'input'  (string)
      info.parent = '/org/freedesktop/Hal/devices/usb_device_6cb_9_noserial_if1'  (string)
      info.product = 'Synaptics Inc. Composite TouchPad / TrackPoint'  (string)
      info.subsystem = 'input'  (string)
      info.udi = '/org/freedesktop/Hal/devices/usb_device_6cb_9_noserial_if1_logicaldev_input'  (string)
      input.device = '/dev/input/event7'  (string)
      input.originating_device = '/org/freedesktop/Hal/devices/usb_device_6cb_9_noserial_if1'  (string)
      input.product = 'Synaptics Inc. Composite TouchPad / TrackPoint'  (string)
      input.x11_driver = 'evdev'  (string)
      linux.device_file = '/dev/input/event7'  (string)
      linux.hotplug_type = 2  (0x2)  (int)
      linux.subsystem = 'input'  (string)
      linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1.4/3-1.4:1.1/input/input7/event7'  (string)
    
    udi = '/org/freedesktop/Hal/devices/usb_device_6cb_9_noserial_if0_logicaldev_input'
      info.capabilities = {'input', 'input.mouse'} (string list)
      info.category = 'input'  (string)
      info.parent = '/org/freedesktop/Hal/devices/usb_device_6cb_9_noserial_if0'  (string)
      info.product = 'Synaptics Inc. Composite TouchPad / TrackPoint'  (string)
      info.subsystem = 'input'  (string)
      info.udi = '/org/freedesktop/Hal/devices/usb_device_6cb_9_noserial_if0_logicaldev_input'  (string)
      input.device = '/dev/input/event6'  (string)
      input.originating_device = '/org/freedesktop/Hal/devices/usb_device_6cb_9_noserial_if0'  (string)
      input.product = 'Synaptics Inc. Composite TouchPad / TrackPoint'  (string)
      input.x11_driver = 'evdev'  (string)
      linux.device_file = '/dev/input/event6'  (string)
      linux.hotplug_type = 2  (0x2)  (int)
      linux.subsystem = 'input'  (string)
      linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1.4/3-1.4:1.0/input/input10/event6'  (string)
    One of these is the trackpoint, the other is the touchpad. On mine, the touchpad was the second device. The key is determining the udi so you can set the options. Create a file /etc/hal/fdi/policy/touchpad.fdi that looks something like this.

    Code:
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <deviceinfo version="0.2">
      <device>
        <match key="info.udi" string="/org/freedesktop/Hal/devices/usb_device_6cb_9_noserial_if0_logicaldev_input">
           <merge key="input.x11_driver" type="string">synaptics</merge>
           <merge key="input.x11_options.SHMConfig" type="string">True</merge>
           <merge key="input.x11_options.HorizEdgeScroll" type="string">1</merge>
           <merge key="input.x11_options.VertEdgeScroll" type="string">1</merge>
           <merge key="input.x11_options.MinSpeed" type="string">0.1</merge>
           <merge key="input.x11_options.MaxSpeed" type="string">1.0</merge>
           <merge key="input.x11_options.AccelFactor" type="string">0.002</merge>
           <merge key="input.x11_options.EdgeMotionMinSpeed" type="string">5</merge>
           <merge key="input.x11_options.EdgeMotionMaxSpeed" type="string">10</merge>
        </match>
      </device>
    </deviceinfo>
    Reboot and if the synaptics-usb driver has been loaded, then all should be working properly, including using synclient to customize settings.
    Great post Dzung! Perfect. Just need to set execution bit on the init.d/synaptics-usb script posted earlier in this thread. Presently I have confirmed Jan Steinhoff's synaptics-usb v1.4 driver works for the Ultranav Travel Keyboard on both i686 and AMD64 8.10 Ubuntu current mainline (January 2009) update. The latest v1.5rc1 driver reportedly doesn't work for this keyboard however.

  9. #9
    Join Date
    Feb 2009
    Beans
    7

    Lightbulb Re: External ThinkPad keyboard with UltraNav (trackpoint and touchpad)

    Similarly, /etc/hal/fdi/policy/trackpoint.fdi can be bound to the unused info.udi from Dzung's post as follows. This enables middle button scrolling on the trackpoint (aka pointing stick) in the new Ubuntu 8.10 xinput way. This feature is built into the standard mouse driver, so there is no driver string line needed here.

    Code:
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <deviceinfo version="0.2">
      <device>
        <match key="info.udi" string="/org/freedesktop/Hal/devices/usb_device_6cb_9_noserial_if1_logicaldev_input">
        <merge key="input.x11_options.EmulateWheel" type="string">true</merge>
        <merge key="input.x11_options.EmulateWheelButton" type="string">2</merge>
        <merge key="input.x11_options.ZAxsisMapping" type="string">4 5</merge>
        <merge key="input.x11_options.Emulate3Buttons" type="string">true</merge>
        <merge key="input.x11_options.EmulateWheelTimeout" type="string">200</merge>
      </match>
    </device>
    </deviceinfo>
    If anybody knows, for the pointing stick, how to enable press to select or double tap for left click please post a reply.

  10. #10
    Join Date
    Nov 2005
    Beans
    26
    Distro
    Ubuntu 9.10 Karmic Koala

    Re: External ThinkPad keyboard with UltraNav (trackpoint and touchpad)

    Thank you to everyone for the great instructions thus far - they got me on the right track, but not quite there yet. I have some strange problems with the keyboard, especially when using GNOME. I am running Ibex.

    Here is what I've done so far:
    1) Installed Jan Steinhoff's USB touchpad driver.
    2) Created a custom HAL configuration file:
    Code:
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <deviceinfo version="0.2">
      <device>
        <match key="info.udi" string="/org/freedesktop/Hal/devices/usb_device_6cb_9_noserial_if0_logicaldev_input">
    	<merge key="input.x11_driver" type="string">synaptics</merge>
    	<merge key="input.x11_options.SHMConfig" type="string">True</merge>
    	<merge key="input.x11_options.TouchpadOff" type="string">1</merge>
        </match>
      </device>
    </deviceinfo>
    Turning off the touchpad allows me to easily see when the synaptics driver is working, and when it isn't.

    Here is what's happening. When I launch the X server, the touchpad is turned off, which tells me that everything is working as it should. Logging in to some minimalist window manager like IceWM allows me to confirm that the synaptics driver is handling the touchpad, b/c I can control the it with synclient.

    Looking at the Xorg.0.log also shows that everything is fine:
    Code:
    (II) config/hal: Adding input device Synaptics USB TouchPad
    (II) LoadModule: "synaptics"
    
    (II) Loading /usr/lib/xorg/modules/input//synaptics_drv.so
    (II) Module synaptics: vendor="X.Org Foundation"
            compiled for 1.5.2, module version = 0.15.2
            Module class: X.Org XInput Driver
            ABI class: X.Org XInput driver, version 2.1
    (II) Synaptics touchpad driver version 0.15.2
    (II) Synaptics USB TouchPad: x-axis range 1472 - 5472
    (II) Synaptics USB TouchPad: y-axis range 1408 - 4448
    (**) Option "Device" "/dev/input/event4"
    (**) Option "SHMConfig" "True"
    (**) Option "TouchpadOff" "1"
    (--) Synaptics USB TouchPad touchpad found
    (**) Synaptics USB TouchPad: always reports core events
    (II) XINPUT: Adding extended input device "Synaptics USB TouchPad" (type: TOUCHPAD)
    (II) Synaptics USB TouchPad: x-axis range 1472 - 5472
    (II) Synaptics USB TouchPad: y-axis range 1408 - 4448
    (--) Synaptics USB TouchPad touchpad found
    However, as soon as I log in to GNOME, the TouchPad becomes active again and synclient no longer works:
    Code:
    Can't access shared memory area. SHMConfig disabled?
    Looking in Xorg.0.log again, I see this:
    Code:
    (II) config/hal: Adding input device Synaptics Inc. Composite TouchPad / TrackPoint
    (II) Synaptics touchpad driver version 0.15.2
    (**) Option "Device" "/dev/input/event4"
    (**) Option "SHMConfig" "True"
    (**) Option "TouchpadOff" "1"
    (EE) Synaptics Inc. Composite TouchPad / TrackPoint no synaptics touchpad detected and no repeater device
    (EE) Synaptics Inc. Composite TouchPad / TrackPoint Unable to query/initialize Synaptics hardware.
    (EE) PreInit failed for input device "Synaptics Inc. Composite TouchPad / TrackPoint"
    (II) UnloadModule: "synaptics"
    (EE) config/hal: NewInputDeviceRequest failed
    I think that after this, the TouchPad is managed by evdev driver again.

    So, my question is, what part of GNOME is causing HAL to reload all the devices on my USB keyboard, and why can't the synaptics driver find the TouchPad the 2nd time?

    The only way I found to get the synaptics driver to see the TouchPad again is to shut down X, run:
    Code:
    synaptics-usb rebind_to synaptics-usb
    and start X again.

    Also, the GNOME keyboard layout switcher becomes useless - it is incapable of switching away from the US layout. Yet, in IceWM, I can easily switch layouts with setxkbmap.

    There are other problems with the keyboard itself, but I posted about that in a separate thread (http://ubuntuforums.org/showthread.p...27#post7330527), since I want to keep this discussion constrained to the TouchPad.

    Any ideas would be greatly appreciated.
    Last edited by vace117; May 23rd, 2009 at 05:45 AM.

Page 1 of 2 12 LastLast

Tags for this Thread

Bookmarks

Posting Permissions

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