Device Drivers

Device Driver Development

What is device driver?

A device driver is a collection of subroutines and data within the kernel that constitutes the software interface to an I/O device. SolveITLabs has experience in development of both types of device drivers: character and block drivers.

In a past some of our development managers have worked with Logitech in research and development of the latest input devices: Sensor Touch Pad (for pen and finger), analog joysticks (the cursor navigated based on earth gravitation), precise mechanical mouse, calculation algorithms for data output from field sources, etc.

Our developers have received several patents in this field and in particular in the analog joystick design area.

Below is a list of device driver areas where our team has domain expertise:

  • Win32, Windows CE at DDK level
  • Linux at kernel and device driver level
  • Porting device drivers between any of the above OS
  • Symbian EPOC-32 mobile OS
  • Serial devices: RS232C, RS422, IrDA and USB
  • Plug 'n Play
 

Case Studies:

Bluetooth Keyboard Drivers For Mobile Devices

Customer's product, the fabric keyboard unit, consists of a fabric sensor that allows key press positions to be converted to key codes via an electronics interface. The key codes are transmitted to the target device over the bluetooth link using a serial port profile. A set of device drivers was developed to reside on target devices (phones/PDA's) that would allow the PDA/Phone to receive input from Bluetooth Keyboard, via the Bluetooth link (using SPP).

USB Redirection Driver

The USB Redirection system makes a wide variety of USB devices available across a network, using either a direct network connections or Windows Terminal Services Remote Desktop Protocol. To use a remote USB device, users of the system will not have to perform any additional installation or configuration other than connecting to the remote USB device using the system.

Server virtualization requires more than just sharing and balancing access to CPU, RAM and disk space. An important component missing from many virtualization solutions is shared access to the explosion of USB devices, not only printers but scanners, cameras, webcams, CD and DVD burners, and an ever-expanding list of new devices. Our systems engineers created a solution to share USB devices not just within a single operating-system family, but across multiple operating systems and environments.
For example, one user can plug a USB scanner into his Macintosh and his neighbor can use it on his Windows machine as if it were plugged in locally.

Printer driver development

The rapid development of the Linux platform in the recent years lead to some problems associated with the absence of full support from some leading software companies. One of the leading electronic manufactures met the same issue. They contacted us to develop a component for a new printer line to show a printer connected to a Linux machine as a NetWare print-server.
The main difficulty was that Novell provides development tools only for DOS and Win32, and does not document internal NDS components. There is a Novell client in Linux, but its capabilities were obviously not enough.

In the course of the project, a fully functional version of the printer driver with native SPX support was developed. Since the documentation obtained from Novell was insufficient for this purpose, part of the required information was found out through reengineering. The project was successfully completed within the time frames set by the customer.

Technologies: C, IPX/SPX, NetWare, NDS