USB HID Drivers on OpenSolaris and Linux By Example. Copyright 2009: Max Bruning Kernel Conference Australia, July, 2009

Size: px
Start display at page:

Download "USB HID Drivers on OpenSolaris and Linux By Example. Copyright 2009: Max Bruning Kernel Conference Australia, July, 2009"

Transcription

1 USB HID Drivers on OpenSolaris and Linux By Example Copyright 2009: Max Bruning Kernel Conference Australia, July, 2009

2 Topics Covered Description of Wacom Tablet USB HID Device Driver Overview Linux Input Event Subsystem Overview HID Driver Framework on OpenSolaris Wacom Kernel Module and X Input Extension Library on OpenSolaris

3 Overview of the Wacom Tablet Tablet models come in different sizes and features Each tablet comes with a pen with replaceable stylus and side switches Tablet can send proximity events, absolute pen coordinates, pressure, height, tilt, pen serial number, and various expresskey events and slider(s) events Tablet contains HID boot protocol which allows pen to work like a mouse More information at

4 USB HID Device Overview Communication between HID devices and a HID driver are in the form of Device Descriptors and/or data Device Descriptor Configuration Descriptor Interface Descriptor Endpoint Descriptor HID Descriptor Report Descriptor Physical Descriptor Descriptors can be viewed using mdb(1)or prtpicl(1) See Device Class Definition for Human Interface Devices(HID)

5 Device Descriptors For Wacom Tablet # mdb -k Loading modules: [ unix genunix specfs dtrace mac cpu.generic uppc pcplusmp scsi_vhci zfs sockfs ip hook neti sctp arp usba uhci sd fctl md lofs audiosup fcip fcp random cpc crypto logindmux ptm ufs nsmb sppp ipc ] > ::prtusb INDEX DRIVER INST NODE VID.PID PRODUCT 1 ehci 0 pci17aa,200b No Product String 2 uhci 0 pci17aa,200a No Product String 3 uhci 1 pci17aa,200a No Product String 4 uhci 2 pci17aa,200a No Product String 5 uhci 3 pci17aa,200a No Product String 6 scsa2usb 1 storage External HDD 7 hid 0 mouse 056a.0065 MTE usb_mid 0 device Biometric Coprocessor >

6 Device Descriptors For Wacom Tablet (Continued) > ::prtusb -v -i 7 Add -t to also show HID Usage Tables INDEX DRIVER INST NODE VID.PID PRODUCT 7 hid 0 mouse 056a.0065 MTE-450 Device Descriptor usb_dev_descr_t from uts/common/sys/usb/usbai.h { blength = 0x12 bdescriptortype = 0x1 bcdusb = 0x200 BDeviceClass = 0 class info in interface descriptor bdevicesubclass = 0 bdeviceprotocol = 0 bmaxpacketsize0 = 0x40 idvendor = 0x56a Wacom vendor id idproduct = 0x65 Bamboo bcddevice = 0x108 imanufacturer = 0x1 iproduct = 0x2 iserialnumber = 0 bnumconfigurations = 0x1 }

7 Device Descriptors for Wacom Tablet (Continued) -- Active Config Index 0 Configuration Descriptor { blength = 0x9 bdescriptortype = 0x2 wtotallength = 0x22 bnuminterfaces = 0x1 bconfigurationvalue = 0x1 iconfiguration = 0x0 bmattributes = 0x80 bus powered bmaxpower = 0x16 44mA } Interface Descriptor { blength = 0x9 bdescriptortype = 0x4 binterfacenumber = 0x0 balternatesetting = 0x0 bnumendpoints = 0x1 binterfaceclass = 0x3 HID Class Device binterfacesubclass = 0x1 Device supports a boot interface binterfaceprotocol = 0x2 Boot protocol is mouse iinterface = 0x0 }

8 Device Descriptors For Wacom Tablet (Continued) HID Descriptor { blength = 0x9 bdescriptortype = 0x21 Assigned by USB, mouse bcdhid = 0x100 bcountrycode = 0x0 Not localized bnumdescriptors = 0x1 breportdescriptortype = 0x22 mouse wreportdescriptorlength = 0x92 } Endpoint Descriptor { blength = 0x7 bdescriptortype = 0x5 mouse bendpointaddress = 0x81 input endpoint number 1 bmattributes = 0x3 interrupt endpoint wmaxpacketsize = 0x9 binterval = 0x4 } >

9 Viewing Device Descriptors on Linux On Linux, USB device information, including descriptors, is located in /proc/bus/usb/devices Information is in ascii (so you can cat the file) See Documentation/usb/proc_usb_info.txt in the Linux source code lsusb -vvv also shows descriptors as well as HID Usage Tables

10 USB HID Device Drivers on Linux Drivers for HID devices on Linux can be implemented via: A kernel driver that communicates with a USB host controller driver via the usb-core API See Programming Guide for Linux USB Device Drivers A user level driver that communicates with the hid_input kernel module A user level driver that communicates with the hiddev kernel module Hid-input and hiddev communicate with the USB host controller driver via hid-core

11 USB HID Device Drivers on Linux (Continued) User level drivers communicate with kernel via libusb and/or libhid Note that the Wacom implementation on Linux consists of a kernel module that communicates directly with the USB host controller via usb-core User level communication with Wacom is via Linux generic input device (/dev/input/event#)

12 USB HID Device Drivers on OpenSolaris For HID devices, OpenSolaris provides the hid(7d)driver and hidparser kernel module hid(7d) handles all communication with the USB host controller via usba(7d) (analagous to usbcore on Linux) hid(7d) is a STREAMS driver Individual HID devices can use a STREAMS module pushed onto the driver to handle the device There is no documentation for writing such a module The hidparser module handles HID descriptors

13 USB HID Device Drivers on OpenSolaris (Continued) OpenSolaris also has support for libusb(3lib) Uses the ugen(7d) kernel driver to communicate with the USB host controller via usba(7d) OpenSolaris currently has no support for libdev or the Linux input device module There are currently hid(7d) STREAMS modules to support mouse, keyboard, and audio control devices.

14 Linux Input Device Handling Application Event Handler (evdev, keybdev, mousedev, joydev) input module Driver Application opens and reads from an input device (/dev/input/event#, for instance) Event Handler is a kernel module that gets input events from the input module The input module gets events from registered drivers, and passes them to registered handlers The driver handles the device. For USB, the driver communicates with the host controller via usb-core, or via hidcore Input events include a time stamp, type of event, code for event type, and a value For instance, a type of event might be a button event, the code indicates which button, and the value would indicate press or release.

15 Linux Input Device Handling USB Input Driver Example /* note that in this example, many details are omitted */ static int foo_probe(struct usb_interface *intf, Const struct usb_device_id *id) { struct foo *foo; /* private state data for device */ foo = kzalloc(sizeof(struct foo), GFP_KERNEL); input_dev = input_allocate_device(); foo->data = usb_buffer_alloc(dev, len, flags, &foo->data_dma); foo->irq = usb_alloc_urb(0, flags); input_dev->open = foo_open; input_dev->close = foo_close; /* initialize input_dev capabilities, i.e., */ /* set input_dev evbits and keybits (buttons, abs vs. rel, etc. */ /* tell input module about supported and min/max params */ /* for instance... */ input_set_abs_params(input_dev, ABS_X, minx, maxx, 0, 0); endp = intf->cur_altsetting->endpoint[i].desc; usb_fill_int_urb(foo->irq, dev, usb_rcvintpipe(dev, endp->bendpointaddress), foo->data, len, foo_irq, foo, endp->bendpointinterval); input_register_device(foo->dev); /* send/retrieve reports, as needed */ usb_set_report(...); }

16 Linux Input Device Handling USB Input Driver Example (Continued) Static void foo_irq(struct urb urb) /* called when data arrives from device (usb-core)*/ { struct foo *foo = (struct foo *)urb->context; unsigned char *data = foo->data; /* the data from the device */ struct input_dev *input_dev = foo->inputdev; switch(urb->status) { case 0: /* success, first process data, then send keys, abs/rel, events */ input_report_abs(input_dev, type, code, value); /* and/or input_event(), input_report_rel(), input_report_key() */ default: /* handle error */ }

17 Linux Input Device Handling Input Module Each input device module maintains bit field arrays of capabilities of the underlying device Device driver fills in bits for corresponding capabilities supported by the device Events Keys Relative Positions Absolute Positions Miscellaneous Events LEDs Sound Effects Force Feedback Events Switches Device drivers tell the input module about events that have occurred Input module checks to make sure the device is capable of generating the event Then the input module passes the event to interested event handler(s), or sent to the device (to turn on/off an LED, for instance) The input module is meant for generic input device handling, currently only used with usb

18 Linux Input Device Handling Event Handler (evdev) The evdev module is meant for processing of generic events Other event handlers exist (mouse, keyboard, joystick), and others can be added evdev places the event in a client buffer and sends a SIGIO to waiting application Applications using evdev will first open an event device (/dev/input/event# where # is between 0 and 31) corresponding to the device for which the application expects events Handler is added for device during input_register_device() Applications must search /dev/input/event# devices to find correct corresponding device (open and then get vendor/product id)

19 Linux Input Device Handling Application Level User level code typically implemented in a library (foo_drv.so) 1. Applications wishing to use the device link with the library For the X windowing system, the library does the following actions: 1. The ModuleSetupProc function tells X about the new input driver 2.The PreInit function loads the kernel foo driver and the event handler module (for instance, evdev) 3.The device_control function, on DEVICE_INIT, opens each /dev/input/event# device until it finds one corresponding to the correct underlying hardware 4. The read_input function is called whenever packets are ready to be read by the server. i. For each packet read, read_input gathers the packets until it has enough information to send event(s) associated with the packet(s) ii. Once all packets have been read, the library calls xf86postxxxevent()to dispatch button press/release, motion, keystrokes, etc. events to the X server. A description of the above functions can be found at

20 HID Framework on OpenSolaris (Example) Application streamhead streamhead Consms STREAMS Multiplexor usbms Conskbd STREAMS Multiplexor usbkbm Hid Driver Hid Driver usba Host Controller Driver ehci/ohci/uhci

21 Wacom Tablet on OpenSolaris 3 versions Modified usbms module Implement input device handling in kernel module Re-Implement Xinput library module

22 Wacom Driver as Modified usbms Application streamhead streamhead usbms Consms STREAMS Multiplexor usbms Usbms modified to support both mouse and tablet All tablet events sent as mouse events Version has been in production for 2 years Hid Driver Hid Driver usba Host Controller Driver ehci/ohci/uhci

23 Problems with First Solution The first iteration was implemented because I could not find a way to pop the usbms module Plumbing of usbms module done by consconfig_dacf kernel module based on dacf.conf(4) Boot protocol identifies tablet as a mouse No tablet key support (pen, erasor, and side switches work) On SPARC, hwc module caused problem All handling of tablet specific data done by modified usbms module

24 Wacom Module Implementing Linux input Events Problem of mouse boot protocol goes away by open(2) of the underlying device (usbms module is popped) wacom STREAMS module pushed onto hid by modified Linux wacom_drv.so library Otherwise, wacom_drv.so needs no modification wacom module converts raw input from tablet into input_event structures expected by library module All features of tablet now work

25 Problems with Second Solution The Linux solution does much of the processing twice, once in the kernel module, and again in the library Licensing (But we won't talk about this...)

26 Wacom on OpenSolaris Yet Another Solution wacom kernel module puts the tablet into pen mode, and sends raw tablet data to consumers The X input library, wacom_drv.so, accepts raw data, converts into X events, and sends the events. Currently, solution is using some Linux library code So, not yet released for OpenSolaris

27 Wacom Kernel Module Sending a Report wacom_get_vid_pid(wacom_state_t wacomp) /* called from module open */ { struct iocblk mctlmsg; mblk_t *mctl_ptr; dev_info_t *devinfo; queue_t *q = wacomp->wacom_rq_ptr; mctlmsg.ioc_cmd = HID_GET_VID_PID; mctlmsg.ioc_count = 0; mctl_ptr = usba_mk_mctl(mctlmsg, NULL, 0); } putnext(wacomp->wacom_wq_ptr, mctl_ptr); wacomp->wacom_flags = WACOM_QWAIT; while (wacomp->wacom_flags & WACOM_QWAIT) { if (qwait_sig(q) == 0) { wacomp->wacom_flags = 0; return (EINTR); } } Return(0);

28 Wacom Kernel Module Reading a Report The hid module acts on M_CTL messages and sends another M_CTL message upstream The wacom module, when it receives the answering M_CTL message, takes appropriate action (for instance, waking up code in the open function), and discards the message All tablet data is received as M_DATA messages, which are passed upstream with no processing

29 Acknowledgements Philip Brown's Wacom driver has been helpful, see Strony Zhang at Sun Microsystems Various people at Wacom James McPherson The Queensland Brain Institute The Source

Simplified Description of USB Device Enumeration

Simplified Description of USB Device Enumeration Future Technology Devices International Ltd. Technical Note TN_113 Simplified Description of USB Device Enumeration Document Reference No.: FT_000180 Issue Date: 2009-10-28 USB Enumeration is the process

More information

AN295 USB AUDIO CLASS TUTORIAL. 1. Introduction. 2. USB, Isochronous Transfers, and the Audio Class. 1.1. Overview. 2.1. USB Operational Overview

AN295 USB AUDIO CLASS TUTORIAL. 1. Introduction. 2. USB, Isochronous Transfers, and the Audio Class. 1.1. Overview. 2.1. USB Operational Overview USB AUDIO CLASS TUTORIAL 1. Introduction Isochronous data transfers can be used by universal serial bus (USB) devices designed to transfer data to or from a host at a constant rate. Systems streaming audio

More information

AN249 HUMAN INTERFACE DEVICE TUTORIAL. Relevant Devices This application note applies to all Silicon Labs USB MCUs. 1.

AN249 HUMAN INTERFACE DEVICE TUTORIAL. Relevant Devices This application note applies to all Silicon Labs USB MCUs. 1. HUMAN INTERFACE DEVICE TUTORIAL Relevant Devices This application note applies to all Silicon Labs USB MCUs. 1. Introduction The Human Interface Device (HID) class specification allows designers to create

More information

AN1164. USB CDC Class on an Embedded Device INTRODUCTION ASSUMPTIONS FEATURES LIMITATIONS

AN1164. USB CDC Class on an Embedded Device INTRODUCTION ASSUMPTIONS FEATURES LIMITATIONS USB CDC Class on an Embedded Device AN1164 Author: Bud Caldwell Microchip Technology Inc. INTRODUCTION The Universal Serial Bus (USB) has made it very simple for end users to attach peripheral devices

More information

Bypassing Endpoint Security for $20 or Less. Philip A. Polstra, Sr. @ppolstra ppolstra.blogspot.com

Bypassing Endpoint Security for $20 or Less. Philip A. Polstra, Sr. @ppolstra ppolstra.blogspot.com Bypassing Endpoint Security for $20 or Less Philip A. Polstra, Sr. @ppolstra ppolstra.blogspot.com Roadmap Why this talk? Who is this dude talking at me? Brief history of USB How does USB work? It s all

More information

PL2571 (Chip Rev B) Hi-Speed USB to SATA Bridge Controller Product Datasheet

PL2571 (Chip Rev B) Hi-Speed USB to SATA Bridge Controller Product Datasheet PL2571 (Chip Rev B) Hi-Speed USB to SATA Bridge Controller Product Datasheet Document Revision: 1.3 Document Release: Prolific Technology Inc. 7F, No. 48, Sec. 3, Nan Kang Rd. Nan Kang, Taipei 115, Taiwan,

More information

Controlling EIB/KNX Devices from Linux using USB. Heinz W. Werntges. University of Applied Sciences Wiesbaden. Jens Neumann and Vladimir Vinarski

Controlling EIB/KNX Devices from Linux using USB. Heinz W. Werntges. University of Applied Sciences Wiesbaden. Jens Neumann and Vladimir Vinarski Fachhochschule Wiesbaden - Controlling EIB/KNX Devices from Linux using USB Heinz W. Werntges University of Applied Sciences Wiesbaden Jens Neumann and Vladimir Vinarski Loewe Opta GmbH, Kompetenzzentrum

More information

SMART Modular Small Form Factor USB Key

SMART Modular Small Form Factor USB Key SMART Modular Small Form Factor USB Key SH9MKxxGQxx Rev E www.smartm.com REVISION HISTORY Date Revision Section(s) Description June 2014 A All Initial release October 2014 B 1.4.1, 1.4.2, 2.2, 4.2, 4.4,

More information

Universal Serial Bus Device Class Definition for Printing Devices

Universal Serial Bus Device Class Definition for Printing Devices Universal Serial Bus Device Class Definition for Printing Devices Version 1.1 January 2000 Contributors Axiohn IPB Kevin Butler Kevin.Butler@axiohm.com Canon Sadahiko Sano sano@cse.canon.co.jp Canon Naoki

More information

AVR32807: Getting Started with the AVR UC3 Software Framework USB Classes. 32-bit Microcontrollers. Application Note. Features.

AVR32807: Getting Started with the AVR UC3 Software Framework USB Classes. 32-bit Microcontrollers. Application Note. Features. AVR32807: Getting Started with the AVR UC3 Software Framework USB Classes Features Full Speed (12Mbit/s) and High Speed (480Mbit/s) data rates Control, Bulk, Isochronuous and Interrupt transfer types Device

More information

Universal Serial Bus Mass Storage Class. Bulk-Only Transport

Universal Serial Bus Mass Storage Class. Bulk-Only Transport Universal Serial Bus Mass Storage Class Bulk-Only Transport Revision 1.0 Change History Revision Issue Date Comments 0.7 September 23, 1998 Initial draft, pre-release 0.8 October 6, 1998 Revisions made

More information

PL-2303HX Edition (Chip Rev A) USB to Serial Bridge Controller Product Datasheet

PL-2303HX Edition (Chip Rev A) USB to Serial Bridge Controller Product Datasheet PL-2303HX Edition (Chip Rev A) USB to Serial Bridge Controller Product Datasheet Document Revision: 1.6 Document Release: Prolific Technology Inc. 7F, No. 48, Sec. 3, Nan Kang Rd. Nan Kang, Taipei 115,

More information

Exploiting USB Devices with Arduino. Greg Ose greg@nullmethod.com Black Hat USA 2011

Exploiting USB Devices with Arduino. Greg Ose greg@nullmethod.com Black Hat USA 2011 Exploiting USB Devices with Arduino Greg Ose greg@nullmethod.com Black Hat USA 2011 Abstract Hardware devices are continually relied upon to maintain a bridge between physical and virtual security. From

More information

Nitrogen D2 16-Bit Stereo USB Audio Controller. Datasheet Version 1.02

Nitrogen D2 16-Bit Stereo USB Audio Controller. Datasheet Version 1.02 The Best USB Audio Single Chip for Stereo Digital Adaptor Application Nitrogen D2 16-Bit Stereo USB Audio Controller (Dolby Digital Live and DTS Interactive Software Technology Bundle) Datasheet Version

More information

A Development Platform for Microcontroller STM32F103

A Development Platform for Microcontroller STM32F103 MEE09:49 A Development Platform for Microcontroller STM32F103 This thesis is presented as part of Degree of Master of Science in Electrical Engineering Blekinge Institute of Technology March 2009 By: Ehsan

More information

CM108 High Integrated USB Audio I/O Controller. DataSheet 1.6

CM108 High Integrated USB Audio I/O Controller. DataSheet 1.6 SS Best USB Audio I/O Controller for Headset and Multi-Media Devices High Integrated USB Audio I/O Controller DataSheet 1.6 C-MEDIA ELECTRONICS INC. TEL: 886-2-8773-1100 FAX: 886-2-8773-2211 6F, 100, Sec.

More information

TB055. PS/2 to USB Mouse Translator IMPLEMENTATION OVERVIEW. Hardware FIGURE 1: PS/2 TO USB MOUSE TRANSLATOR HARDWARE DIAGRAM (1)

TB055. PS/2 to USB Mouse Translator IMPLEMENTATION OVERVIEW. Hardware FIGURE 1: PS/2 TO USB MOUSE TRANSLATOR HARDWARE DIAGRAM (1) PS/2 to USB Mouse Translator TB55 Author: OVERVIEW Reston Condit Microchip Technology Inc. This Technical Brief details the translation of a PS/2 mouse to a USB mouse using the PIC16C745/765. The PIC16C745/765

More information

TouchKit driver user guide for Linux

TouchKit driver user guide for Linux TouchKit driver user guide for Linux This driver/utility package supports TouchKit controllers only. All of versions support RS232 and USB interfaces of controllers. The module version later than 1.06

More information

Application Note. 8-bit Microcontrollers. AVR276: USB Software Library for AT90USBxxx Microcontrollers

Application Note. 8-bit Microcontrollers. AVR276: USB Software Library for AT90USBxxx Microcontrollers : USB Software Library for AT90USBxxx Microcontrollers Features Low Speed (1.5Mbit/s) and Full Speed (12Mbit/s) data rates Control, Bulk, Isochronuous and Interrupt transfer types Up to 6 data endpoints/pipes

More information

TivaWare USB Library USER S GUIDE SW-TM4C-USBL-UG-2.1.1.71. Copyright 2008-2015 Texas Instruments Incorporated

TivaWare USB Library USER S GUIDE SW-TM4C-USBL-UG-2.1.1.71. Copyright 2008-2015 Texas Instruments Incorporated TivaWare USB Library USER S GUIDE SW-TM4C-USBL-UG-2.1.1.71 Copyright 2008-2015 Texas Instruments Incorporated Copyright Copyright 2008-2015 Texas Instruments Incorporated. All rights reserved. Tiva and

More information

AN1163. USB HID Class on an Embedded Device FEATURES INTRODUCTION LIMITATIONS ASSUMPTIONS SYSTEM HARDWARE. Microchip Technology Inc.

AN1163. USB HID Class on an Embedded Device FEATURES INTRODUCTION LIMITATIONS ASSUMPTIONS SYSTEM HARDWARE. Microchip Technology Inc. USB HID Class on an Embedded Device AN1163 Author: INTRODUCTION The Human Interface Device (HID) is a class for use with Universal Serial Bus (USB). The HID class consists of devices that a human may use

More information

USB Overview. This course serves as an introduction to USB.

USB Overview. This course serves as an introduction to USB. USB Overview This course serves as an introduction to USB. 1 Agenda USB overview USB low level data transfer USB protocol structure USB chapter 9 structure Enumeration Standard classes Firmware example

More information

AVR069: AVRISP mkii Communication Protocol. 8-bit Microcontrollers. Application Note. Features. 1 Introduction

AVR069: AVRISP mkii Communication Protocol. 8-bit Microcontrollers. Application Note. Features. 1 Introduction AVR069: AVRISP mkii Communication Protocol Features General commands ISP commands Return values Parameters 1 Introduction This document describes the AVRISP mkii protocol. The firmware is distributed with

More information

Operating Systems Design 16. Networking: Sockets

Operating Systems Design 16. Networking: Sockets Operating Systems Design 16. Networking: Sockets Paul Krzyzanowski pxk@cs.rutgers.edu 1 Sockets IP lets us send data between machines TCP & UDP are transport layer protocols Contain port number to identify

More information

UM0801-03. PN533 User Manual. Document information. Keywords NFC, PN533, V2.7. This document describes the firmware V2.7 embedded in the PN533.

UM0801-03. PN533 User Manual. Document information. Keywords NFC, PN533, V2.7. This document describes the firmware V2.7 embedded in the PN533. Rev. 03 User Manual Document information Info Content Keywords NFC, PN533, V2.7 Abstract This document describes the firmware V2.7 embedded in the PN533. Revision history 01 2008-04-01 Initial version

More information

An Analysis of Wireless Device Implementations on Universal Serial Bus

An Analysis of Wireless Device Implementations on Universal Serial Bus An Analysis of Wireless Device Implementations on Universal Serial Bus 6/3/97 Abstract Universal Serial Bus (USB) is a new personal computer (PC) interconnect that can support simultaneous attachment of

More information

python-escpos Documentation

python-escpos Documentation python-escpos Documentation Release 1.0.8 Manuel F Martinez and others March 14, 2016 Contents 1 User Documentation: 3 2 API: 13 3 Indices and tables 17 Python Module Index 19 i ii Python ESC/POS is a

More information

Determining USB Peripheral Device Class

Determining USB Peripheral Device Class Future Technology Devices International Ltd. Application Note AN_174 Determining USB Peripheral Device Class Document Reference No.: FT_000447 Issue Date: 2011-05-23 This document will demonstrate how

More information

Freescale MQX USB Device User Guide

Freescale MQX USB Device User Guide Freescale MQX USB Device User Guide MQXUSBDEVUG Rev. 4 02/2014 How to Reach Us: Home Page: freescale.com Web Support: freescale.com/support Information in this document is provided solely to enable system

More information

Ethernet Interface Manual Thermal / Label Printer. Rev. 1.01 Metapace T-1. Metapace T-2 Metapace L-1 Metapace L-2

Ethernet Interface Manual Thermal / Label Printer. Rev. 1.01 Metapace T-1. Metapace T-2 Metapace L-1 Metapace L-2 Ethernet Interface Manual Thermal / Label Printer Rev. 1.01 Metapace T-1 Metapace T-2 Metapace L-1 Metapace L-2 Table of contents 1. Interface setting Guiding...3 2. Manual Information...4 3. Interface

More information

Application Note: AN00131 USB CDC-ECM Class for Ethernet over USB

Application Note: AN00131 USB CDC-ECM Class for Ethernet over USB Application Note: AN00131 USB CDC-ECM Class for Ethernet over USB This application note shows how to create a USB device compliant to the standard USB Communications Device Class (CDC) and the Ethernet

More information

COS 318: Operating Systems. I/O Device and Drivers. Input and Output. Definitions and General Method. Revisit Hardware

COS 318: Operating Systems. I/O Device and Drivers. Input and Output. Definitions and General Method. Revisit Hardware COS 318: Operating Systems I/O and Drivers Input and Output A computer s job is to process data Computation (, cache, and memory) Move data into and out of a system (between I/O devices and memory) Challenges

More information

IDDERO HOME SERVER. Quick start guide. www.iddero.com 150302-02

IDDERO HOME SERVER. Quick start guide. www.iddero.com 150302-02 IDDERO HOME SERVER Quick start guide www.iddero.com 150302-02 TABLE OF CONTENTS 1 INTRODUCTION... 3 2 IDDERO CONFIGURATION SOFTWARE... 3 2.1 Installation and First Steps...3 3 IDDERO HOME SERVER CONFIGURATION...

More information

Atmel AVR4950: ASF - USB Host Stack. 8-bit Atmel Microcontrollers. Application Note. Features. 1 Introduction

Atmel AVR4950: ASF - USB Host Stack. 8-bit Atmel Microcontrollers. Application Note. Features. 1 Introduction Atmel AVR4950: ASF - USB Host Stack Features USB 2.0 compliance - Chapter 9 - Control, Bulk, Isochronous and Interrupt transfer types - Low Speed (1.5Mbit/s), Full Speed (12Mbit/s), High Speed (480Mbit/s)

More information

Controlling EIB/KNX devices from Linux using USB

Controlling EIB/KNX devices from Linux using USB Controlling EIB/KNX devices from Linux using USB Heinz W. Werntges 1 Fachbereich Informatik, Univ. of Applied Sciences Wiesbaden Jens Neumann and Vladimir Vinarski Loewe Opta GmbH, Kompetenzzentrum Hannover

More information

Follow these steps to prepare the module and evaluation board for testing.

Follow these steps to prepare the module and evaluation board for testing. 2 Getting Started 2.1. Hardware Installation Procedure Follow these steps to prepare the module and evaluation board for testing. STEP1: Plug the EG-SR-7100A module into the sockets on the test board.

More information

Linux Driver Devices. Why, When, Which, How?

Linux Driver Devices. Why, When, Which, How? Bertrand Mermet Sylvain Ract Linux Driver Devices. Why, When, Which, How? Since its creation in the early 1990 s Linux has been installed on millions of computers or embedded systems. These systems may

More information

Linux Kernel Architecture

Linux Kernel Architecture Linux Kernel Architecture Amir Hossein Payberah payberah@yahoo.com Contents What is Kernel? Kernel Architecture Overview User Space Kernel Space Kernel Functional Overview File System Process Management

More information

Freescale MQX RTOS USB Host User s Guide

Freescale MQX RTOS USB Host User s Guide Freescale MQX RTOS USB Host User s Guide MQXUSBHOSTUG Rev. 7 08/2014 How to Reach Us: Home Page: freescale.com Web Support: freescale.com/support Information in this document is provided solely to enable

More information

The Answer to the 14 Most Frequently Asked Modbus Questions

The Answer to the 14 Most Frequently Asked Modbus Questions Modbus Frequently Asked Questions WP-34-REV0-0609-1/7 The Answer to the 14 Most Frequently Asked Modbus Questions Exactly what is Modbus? Modbus is an open serial communications protocol widely used in

More information

Useful USB Gadgets on Linux

Useful USB Gadgets on Linux Useful USB Gadgets on Linux February, 2012 Gary Bisson Adeneo Embedded Embedded Linux Conference 2012 1 Agenda Introduction to USB USB Gadget API Existing Gadgets Design your own Gadget Demo Conclusion

More information

Learning USB by Doing. John.Hyde@intel.com

Learning USB by Doing. John.Hyde@intel.com Learning USB by Doing. John.Hyde@intel.com The question that I am asked most often is how do I start a USB project? There are many alternate starting points for the design of a USB I/O device and this

More information

Application Note. 8-bit Microcontrollers. AVR270: USB Mouse Demonstration

Application Note. 8-bit Microcontrollers. AVR270: USB Mouse Demonstration AVR270: USB Mouse Demonstration Features Runs with AT90USB Microcontrollers at 8MHz USB Low Power Bus Powered Device (less then 100mA) Supported by any PC running Windows (98SE or later), Linux or Mac

More information

S7 for Windows S7-300/400

S7 for Windows S7-300/400 S7 for Windows S7-300/400 A Programming System for the Siemens S7 300 / 400 PLC s IBHsoftec has an efficient and straight-forward programming system for the Simatic S7-300 and ern controller concept can

More information

User s Guide for Polycom CX7000 Systems

User s Guide for Polycom CX7000 Systems User s Guide for Polycom CX7000 Systems 1.1 August 2012 3725-63878-001/C Trademark Information Polycom, the Polycom Triangles logo, and the names and marks associated with Polycom s products are trademarks

More information

Bluetooth HID Profile

Bluetooth HID Profile RN-WIFLYCR-UM-.01 RN-HID-UM Bluetooth HID Profile 2012 Roving Networks. All rights reserved. Version 1.0r 1/17/2012 USER MANUAL www.rovingnetworks.com 1 OVERVIEW Roving Networks Bluetooth modules support

More information

I/O Device and Drivers

I/O Device and Drivers COS 318: Operating Systems I/O Device and Drivers Prof. Margaret Martonosi Computer Science Department Princeton University http://www.cs.princeton.edu/courses/archive/fall11/cos318/ Announcements Project

More information

Socket Programming in C/C++

Socket Programming in C/C++ September 24, 2004 Contact Info Mani Radhakrishnan Office 4224 SEL email mradhakr @ cs. uic. edu Office Hours Tuesday 1-4 PM Introduction Sockets are a protocol independent method of creating a connection

More information

Objectives of Lecture. Network Architecture. Protocols. Contents

Objectives of Lecture. Network Architecture. Protocols. Contents Objectives of Lecture Network Architecture Show how network architecture can be understood using a layered approach. Introduce the OSI seven layer reference model. Introduce the concepts of internetworking

More information

AN1169. USB Mass Storage Class on an Embedded Device FEATURES INTRODUCTION LIMITATIONS ASSUMPTIONS SYSTEM HARDWARE. Microchip Technology Inc.

AN1169. USB Mass Storage Class on an Embedded Device FEATURES INTRODUCTION LIMITATIONS ASSUMPTIONS SYSTEM HARDWARE. Microchip Technology Inc. USB Mass Storage Class on an Embedded Device Author: INTRODUCTION In recent years, there has been immense growth in Universal Serial Bus (USB) based applications, primarily due to the Plug-and-Play nature

More information

Do More With Less. On Driver-less Interfacing with Embedded Devices. Peter Korsgaard <peter@korsgaard.com>

Do More With Less. On Driver-less Interfacing with Embedded Devices. Peter Korsgaard <peter@korsgaard.com> Do More With Less On Driver-less Interfacing with Embedded Devices Peter Korsgaard NSLU2-Linux Peter Korsgaard Driver-less Interfacing? Interfacing without having to install any custom

More information

Motion Control Products Application note Connecting CP600 to motion products via Modbus TCP

Motion Control Products Application note Connecting CP600 to motion products via Modbus TCP Motion Control Products Application note Connecting CP600 to motion products via Modbus TCP AN00199-002 Seamless high speed Ethernet communication between HMI and motion products Introduction The CP600

More information

Network packet capture in Linux kernelspace

Network packet capture in Linux kernelspace Network packet capture in Linux kernelspace An overview of the network stack in the Linux kernel Beraldo Leal beraldo@ime.usp.br http://www.ime.usp.br/~beraldo/ Institute of Mathematics and Statistics

More information

i.mx USB loader A white paper by Tristan Lelong

i.mx USB loader A white paper by Tristan Lelong i.mx USB loader A white paper by Tristan Lelong Introduction This document aims to explain the serial downloader feature of i.mx SoCs on Linux (available across i.mx family starting with i.mx23). This

More information

Quick installation guide for the Vista Quantum QNVR Network Video Recorder

Quick installation guide for the Vista Quantum QNVR Network Video Recorder QNVR range Quick Instalation guide Quick installation guide for the Vista Quantum QNVR Network Video Recorder Full manual found on the CD supplied with the NVR Contents SCOPE OF USE... 3 1. FRONT PANEL

More information

VMware Server 2.0 Essentials. Virtualization Deployment and Management

VMware Server 2.0 Essentials. Virtualization Deployment and Management VMware Server 2.0 Essentials Virtualization Deployment and Management . This PDF is provided for personal use only. Unauthorized use, reproduction and/or distribution strictly prohibited. All rights reserved.

More information

Data Transfer between Serial Link and TCP/IP Link Using ez80f91 MCU

Data Transfer between Serial Link and TCP/IP Link Using ez80f91 MCU Application Note Data Transfer between Serial Link and TCP/IP Link Using ez80f91 MCU AN021904 0808 Abstract This application note describes Zilog s ez80 - based Serial-to-TCP and TCP-to-Serial communicator

More information

Feature Check. elux Operating Systems. Feature Check

Feature Check. elux Operating Systems. Feature Check elux Operating Systems Operating System Linux Kernel 2.6.37 Linux Kernel 2.6.38 Linux Kernel 3.4.71 XORG Graphics Qt 4 Hardware independent supports all established Thin Client platforms Supports standard

More information

ELEN 602: Computer Communications and Networking. Socket Programming Basics

ELEN 602: Computer Communications and Networking. Socket Programming Basics 1 ELEN 602: Computer Communications and Networking Socket Programming Basics A. Introduction In the classic client-server model, the client sends out requests to the server, and the server does some processing

More information

TabletWorks Help Index 1

TabletWorks Help Index 1 TabletWorks Help Index 1 When the driver for your tablet type has been installed, the TabletWorks Control Panel is set up on the Windows Control Panel. The TabletWorks Control Panel is divided into several

More information

Embedded Programming in C/C++: Lesson-1: Programming Elements and Programming in C

Embedded Programming in C/C++: Lesson-1: Programming Elements and Programming in C Embedded Programming in C/C++: Lesson-1: Programming Elements and Programming in C 1 An essential part of any embedded system design Programming 2 Programming in Assembly or HLL Processor and memory-sensitive

More information

Creating a More Secure Device with Windows Embedded Compact 7. Douglas Boling Boling Consulting Inc.

Creating a More Secure Device with Windows Embedded Compact 7. Douglas Boling Boling Consulting Inc. Creating a More Secure Device with Windows Embedded Compact 7 Douglas Boling Boling Consulting Inc. About Douglas Boling Independent consultant specializing in Windows Mobile and Windows Embedded Compact

More information

BLUETOOTH SERIAL PORT PROFILE. iwrap APPLICATION NOTE

BLUETOOTH SERIAL PORT PROFILE. iwrap APPLICATION NOTE BLUETOOTH SERIAL PORT PROFILE iwrap APPLICATION NOTE Thursday, 19 April 2012 Version 1.2 Copyright 2000-2012 Bluegiga Technologies All rights reserved. Bluegiga Technologies assumes no responsibility for

More information

Input and Interaction

Input and Interaction Input and Interaction 1 Objectives Introduce basic input devices Physical Devices Logical Devices Input Modes Event-driven input Introduce double buffering for smooth animations Programming event input

More information

Chapter 3: Operating-System Structures. System Components Operating System Services System Calls System Programs System Structure Virtual Machines

Chapter 3: Operating-System Structures. System Components Operating System Services System Calls System Programs System Structure Virtual Machines Chapter 3: Operating-System Structures System Components Operating System Services System Calls System Programs System Structure Virtual Machines Operating System Concepts 3.1 Common System Components

More information

www.dragino.com Yun Shield Quick Start Guide VERSION: 1.0 Version Description Date 1.0 Release 2014-Jul-08 Yun Shield Quick Start Guide 1 / 14

www.dragino.com Yun Shield Quick Start Guide VERSION: 1.0 Version Description Date 1.0 Release 2014-Jul-08 Yun Shield Quick Start Guide 1 / 14 Yun Shield Quick Start Guide VERSION: 1.0 Version Description Date 1.0 Release 2014-Jul-08 Yun Shield Quick Start Guide 1 / 14 Index: 1 Introduction... 3 1.1 About this quick start guide... 3 1.2 What

More information

Addendum. Additional materials of interest to Stellaris users

Addendum. Additional materials of interest to Stellaris users Addendum Additional materials of interest to Stellaris users USB Examples for EKx-LM3S3748 Evaluation Kit USB Boot Loader Demos 1 and 2... 3 USB Generic Bulk Device... 4 USB HID Keyboard Device... 4 USB

More information

Leveraging the Android Accessory Protocol

Leveraging the Android Accessory Protocol Leveraging the Android Accessory Protocol Gary Bisson Adeneo Embedded gbisson@adeneo-embedded.com Android Builders Summit 2013 1 Session Overview Introduction to Android Open Accessory Protocol specifications

More information

Wireless Laser Barcode Scanner ils 6300BU. User s Manual

Wireless Laser Barcode Scanner ils 6300BU. User s Manual Wireless Laser Barcode Scanner ils 6300BU User s Manual FCC Compliance This equipment has been tested and found to comply with the limits for a Class A digital device, pursuant to Part 15 of the FCC Rules.

More information

CS 326e F2002 Lab 1. Basic Network Setup & Ethereal Time: 2 hrs

CS 326e F2002 Lab 1. Basic Network Setup & Ethereal Time: 2 hrs CS 326e F2002 Lab 1. Basic Network Setup & Ethereal Time: 2 hrs Tasks: 1 (10 min) Verify that TCP/IP is installed on each of the computers 2 (10 min) Connect the computers together via a switch 3 (10 min)

More information

CCEVS Approved Assurance Continuity Maintenance Report

CCEVS Approved Assurance Continuity Maintenance Report Record ID: VID10486-0004-ACMR TM CCEVS Approved Assurance Continuity Maintenance Report Product: Orchestrator 4.6 EAL: 2 augmented with ALC_FLR.3 Date of Activity: 25 March 2013 References: Documentation

More information

WA Manager Alarming System Management Software Windows 98, NT, XP, 2000 User Guide

WA Manager Alarming System Management Software Windows 98, NT, XP, 2000 User Guide WA Manager Alarming System Management Software Windows 98, NT, XP, 2000 User Guide Version 2.1, 4/2010 Disclaimer While every effort has been made to ensure that the information in this guide is accurate

More information

MS Windows DHCP Server Configuration

MS Windows DHCP Server Configuration MS Windows DHCP Server Configuration Abstract This document describes how to configure option 43 on a Microsoft Windows 2000/2003 DHCP server. This information may be used in an Aruba Networks solution

More information

PCI-to-SATA RAID Adapter AEC-6890M. User s Manual Version:1.0

PCI-to-SATA RAID Adapter AEC-6890M. User s Manual Version:1.0 PCI-to-SATA RAID Adapter AEC-6890M User s Manual Version:1.0 Copyright 2003 ACARD Technology Corp. Release: August 2003 Copyright and Trademarks The information of the product in this manual is subject

More information

Lab 2.0 Thermal Camera Interface

Lab 2.0 Thermal Camera Interface Lab 2.0 Thermal Camera Interface Lab 1 - Camera directional-stand (recap) The goal of the lab 1 series was to use a PS2 joystick to control the movement of a pan-tilt module. To this end, you implemented

More information

A Design of Video Acquisition and Transmission Based on ARM. Ziqiang Hao a, Hongzuo Li b

A Design of Video Acquisition and Transmission Based on ARM. Ziqiang Hao a, Hongzuo Li b A Design of Video Acquisition and Transmission Based on ARM Ziqiang Hao a, Hongzuo Li b Changchun University of Science & Technology, Changchun, Jilin, China a shuil47@163.com, b lihongzuo@sohu.com Keywords:video

More information

Objectives. Chapter 2: Operating-System Structures. Operating System Services (Cont.) Operating System Services. Operating System Services (Cont.

Objectives. Chapter 2: Operating-System Structures. Operating System Services (Cont.) Operating System Services. Operating System Services (Cont. Objectives To describe the services an operating system provides to users, processes, and other systems To discuss the various ways of structuring an operating system Chapter 2: Operating-System Structures

More information

Database Toolkit: Portable and Cost Effective Software

Database Toolkit: Portable and Cost Effective Software Database Toolkit: Portable and Cost Effective Software By Katherine Ye Recursion Software, Inc. TABLE OF CONTENTS Abstract...2 Why using ODBC...2 Disadvantage of ODBC...3 Programming with Database Toolkit...4

More information

Table of Contents. Wacom Tablet HOWTO

Table of Contents. Wacom Tablet HOWTO Table of Contents Wacom Tablet HOWTO..1 Stefan Runkel .1 1. Copyright1 2. Introduction1 3. Requirements1 4. Tablets as Mouse Replacement for the Linux Console1 5. Tablets with XFree

More information

Application Note: AN00121 Using XMOS TCP/IP Library for UDP-based Networking

Application Note: AN00121 Using XMOS TCP/IP Library for UDP-based Networking Application Note: AN00121 Using XMOS TCP/IP Library for UDP-based Networking This application note demonstrates the use of XMOS TCP/IP stack on an XMOS multicore micro controller to communicate on an ethernet-based

More information

The POSIX Socket API

The POSIX Socket API The POSIX Giovanni Agosta Piattaforme Software per la Rete Modulo 2 G. Agosta The POSIX Outline Sockets & TCP Connections 1 Sockets & TCP Connections 2 3 4 G. Agosta The POSIX TCP Connections Preliminaries

More information

CS 377: Operating Systems. Outline. A review of what you ve learned, and how it applies to a real operating system. Lecture 25 - Linux Case Study

CS 377: Operating Systems. Outline. A review of what you ve learned, and how it applies to a real operating system. Lecture 25 - Linux Case Study CS 377: Operating Systems Lecture 25 - Linux Case Study Guest Lecturer: Tim Wood Outline Linux History Design Principles System Overview Process Scheduling Memory Management File Systems A review of what

More information

Using PCoIP Zero Clients with PCoIP Host Cards

Using PCoIP Zero Clients with PCoIP Host Cards Using PCoIP Zero Clients with PCoIP Host Cards T E C H N I C A L N O T E S Table of Contents Preface..................................................................... 3 Additional Support.........................................................

More information

User Manual Network Interface

User Manual Network Interface User Manual Network Interface Rev. 1.00 SRP-350plusll SRP-352plusll http://www.bixolon.com Table of Contents 1. Manual Information...3 2. Specifications...3 2-1 Hardware version...3 2-2 Configuration Tool...3

More information

Bitrix Site Manager 4.0. Quick Start Guide to Newsletters and Subscriptions

Bitrix Site Manager 4.0. Quick Start Guide to Newsletters and Subscriptions Bitrix Site Manager 4.0 Quick Start Guide to Newsletters and Subscriptions Contents PREFACE...3 CONFIGURING THE MODULE...4 SETTING UP FOR MANUAL SENDING E-MAIL MESSAGES...6 Creating a newsletter...6 Providing

More information

For Windows XP 64 bit

For Windows XP 64 bit Installation Guide Beta drivers for Windows XP[64], Win 7[32/64bit,], Win 8.1[64bit] This version of Orange-5 software introduces support for 64 bit operational systems (Win XP 64 bit, Win7 64, etc..).

More information

Last Class: OS and Computer Architecture. Last Class: OS and Computer Architecture

Last Class: OS and Computer Architecture. Last Class: OS and Computer Architecture Last Class: OS and Computer Architecture System bus Network card CPU, memory, I/O devices, network card, system bus Lecture 3, page 1 Last Class: OS and Computer Architecture OS Service Protection Interrupts

More information

Open Arcade Architecture Device Data Format Specification

Open Arcade Architecture Device Data Format Specification OAAD Data Format Specification 01/29/99 Page 1 of 27 Open Arcade Architecture Device Data Format Specification Rev. 1.100 November 5, 1998 Copyright 1998, Intel Corporation. All rights reserved. THIS SPECIFICATION

More information

Last Class: OS and Computer Architecture. Last Class: OS and Computer Architecture

Last Class: OS and Computer Architecture. Last Class: OS and Computer Architecture Last Class: OS and Computer Architecture System bus Network card CPU, memory, I/O devices, network card, system bus Lecture 3, page 1 Last Class: OS and Computer Architecture OS Service Protection Interrupts

More information

REAL TIME OPERATING SYSTEM PROGRAMMING-II: II: Windows CE, OSEK and Real time Linux. Lesson-12: Real Time Linux

REAL TIME OPERATING SYSTEM PROGRAMMING-II: II: Windows CE, OSEK and Real time Linux. Lesson-12: Real Time Linux REAL TIME OPERATING SYSTEM PROGRAMMING-II: II: Windows CE, OSEK and Real time Linux Lesson-12: Real Time Linux 1 1. Real Time Linux 2 Linux 2.6.x Linux is after Linus Torvalds, father of the Linux operating

More information

Help. Contents Back >>

Help. Contents Back >> Contents Back >> Customizing Opening the Control Panel Control Panel Features Tabs Control Panel Lists Control Panel Buttons Customizing Your Tools Pen and Airbrush Tabs 2D Mouse and 4D Mouse Tabs Customizing

More information

Ethernet 241 (USB/Serial) Quick Start Guide

Ethernet 241 (USB/Serial) Quick Start Guide Ethernet 241 (USB/Serial) Quick Start Guide I. Ethernet 241 Device Overview The Ethernet 241 device is a two port switch that interfaces a networked device (such as a printer) with a networked device server,

More information

Kernel comparison of OpenSolaris, Windows Vista and. Linux 2.6

Kernel comparison of OpenSolaris, Windows Vista and. Linux 2.6 Kernel comparison of OpenSolaris, Windows Vista and Linux 2.6 The idea of writing this paper is evoked by Max Bruning's view on Solaris, BSD and Linux. The comparison of advantages and disadvantages among

More information

Xinying Wang, Cong Xu CS 423 Project

Xinying Wang, Cong Xu CS 423 Project Understanding Linux Network Device Driver and NAPI Mechanism Xinying Wang, Cong Xu CS 423 Project Outline Ethernet Introduction Ethernet Frame MAC address Linux Network Driver Intel e1000 driver Important

More information

IP SAN Fundamentals: An Introduction to IP SANs and iscsi

IP SAN Fundamentals: An Introduction to IP SANs and iscsi IP SAN Fundamentals: An Introduction to IP SANs and iscsi Updated April 2007 Sun Microsystems, Inc. 2007 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, CA 95054 USA All rights reserved. This

More information

AXIS Video Capture Driver. AXIS Video Capture Driver. User s Manual

AXIS Video Capture Driver. AXIS Video Capture Driver. User s Manual AXIS Video Capture Driver User s Manual 1 Introduction The AXIS Video Capture Driver enables video stream input from one Axis network video product to be recorded and shown with third party products, e.g.

More information

Quick Start Guide v1.0. This Quick Start Guide is relevant to Laird s BT800, BT810 and BT820 Bluetooth modules.

Quick Start Guide v1.0. This Quick Start Guide is relevant to Laird s BT800, BT810 and BT820 Bluetooth modules. v1.0 This is relevant to Laird s BT800, BT810 and BT820 Bluetooth modules. INTRODUCTION The Linux operating system, and Android by extension, has excellent USB support for a variety of devices. This makes

More information

Example of Standard API

Example of Standard API 16 Example of Standard API System Call Implementation Typically, a number associated with each system call System call interface maintains a table indexed according to these numbers The system call interface

More information

Introduction to Analyzer and the ARP protocol

Introduction to Analyzer and the ARP protocol Laboratory 6 Introduction to Analyzer and the ARP protocol Objetives Network monitoring tools are of interest when studying the behavior of network protocols, in particular TCP/IP, and for determining

More information

Packet Sniffing and Spoofing Lab

Packet Sniffing and Spoofing Lab SEED Labs Packet Sniffing and Spoofing Lab 1 Packet Sniffing and Spoofing Lab Copyright c 2014 Wenliang Du, Syracuse University. The development of this document is/was funded by the following grants from

More information