US6009480A - Integrated device driver wherein the peripheral downloads the device driver via an I/O device after it is determined that the I/O device has the resources to support the peripheral device - Google Patents

Integrated device driver wherein the peripheral downloads the device driver via an I/O device after it is determined that the I/O device has the resources to support the peripheral device Download PDF

Info

Publication number
US6009480A
US6009480A US08/927,349 US92734997A US6009480A US 6009480 A US6009480 A US 6009480A US 92734997 A US92734997 A US 92734997A US 6009480 A US6009480 A US 6009480A
Authority
US
United States
Prior art keywords
peripheral device
driver
memory
processor
card
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
US08/927,349
Inventor
Mark F. Pleso
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Symbol Technologies LLC
Bank One Corp
Original Assignee
Telxon Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority to US08/927,349 priority Critical patent/US6009480A/en
Assigned to TELXON CORPORATION reassignment TELXON CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: PLESO, MARC L.
Application filed by Telxon Corp filed Critical Telxon Corp
Assigned to BANK OF NEW YORK, THE reassignment BANK OF NEW YORK, THE SECURITY INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: TELXON CORPORATION
Assigned to BANK ONE, NA reassignment BANK ONE, NA ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: TELXON CORPORATION, A DELAWARE CORPORATION
Assigned to FOOTHILL CAPITAL CORPORATION AS AGENT reassignment FOOTHILL CAPITAL CORPORATION AS AGENT SECURITY INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: TELXON CORPORATION
Assigned to TELXON CORPORATION reassignment TELXON CORPORATION RELEASE OF SECURITY INTEREST Assignors: BANK ONE, NA
Assigned to TELXON CORPORATION reassignment TELXON CORPORATION RELEASE BY SECURED PARTY (SEE DOCUMENT FOR DETAILS). Assignors: THE BANK OF NEW YORK, AS AGENT
Application granted granted Critical
Publication of US6009480A publication Critical patent/US6009480A/en
Assigned to SYMBOL TECHNOLOGIES, INC. reassignment SYMBOL TECHNOLOGIES, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: TELXON CORPORATION
Assigned to JPMORGAN CHASE BANK, N.A. reassignment JPMORGAN CHASE BANK, N.A. SECURITY INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: SYMBOL TECHNOLOGIES, INC.
Assigned to TELXON CORPORATION reassignment TELXON CORPORATION RELEASE OF SECURITY AGREEMENT Assignors: WELLS FARGO FOOTHILL, INC. (FORMERLY FOOTHILL CAPITAL CORPORATION)
Assigned to SYMBOL TECHNOLOGIES, INC. reassignment SYMBOL TECHNOLOGIES, INC. RELEASE BY SECURED PARTY (SEE DOCUMENT FOR DETAILS). Assignors: JPMORGANCHASE BANK, N.A.
Assigned to MORGAN STANLEY SENIOR FUNDING, INC. AS THE COLLATERAL AGENT reassignment MORGAN STANLEY SENIOR FUNDING, INC. AS THE COLLATERAL AGENT SECURITY AGREEMENT Assignors: LASER BAND, LLC, SYMBOL TECHNOLOGIES, INC., ZEBRA ENTERPRISE SOLUTIONS CORP., ZIH CORP.
Assigned to SYMBOL TECHNOLOGIES, LLC reassignment SYMBOL TECHNOLOGIES, LLC CHANGE OF NAME (SEE DOCUMENT FOR DETAILS). Assignors: SYMBOL TECHNOLOGIES, INC.
Assigned to SYMBOL TECHNOLOGIES, INC. reassignment SYMBOL TECHNOLOGIES, INC. RELEASE BY SECURED PARTY (SEE DOCUMENT FOR DETAILS). Assignors: MORGAN STANLEY SENIOR FUNDING, INC.
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers
    • G06F9/4413Plug-and-play [PnP]
    • G06F9/4415Self describing peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1202Dedicated interfaces to print systems specifically adapted to achieve a particular effect
    • G06F3/1203Improving or facilitating administration, e.g. print management
    • G06F3/1204Improving or facilitating administration, e.g. print management resulting in reduced user or operator actions, e.g. presetting, automatic actions, using hardware token storing data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1223Dedicated interfaces to print systems specifically adapted to use a particular technique
    • G06F3/1224Client or server resources management
    • G06F3/1225Software update, e.g. print driver, modules, plug-ins, fonts
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1278Dedicated interfaces to print systems specifically adapted to adopt a particular infrastructure
    • G06F3/1284Local printer device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1296Printer job scheduling or printer resource handling

Definitions

  • the present invention relates generally to a method and system for providing and installing a device driver, and more particularly to a method and system for integrating a device driver with the device itself.
  • a computer system typically is connected to various peripheral devices, which include disk drives, tape drives, printers, modems, etc.
  • the computer system has an operating system that provides an interface between an application program and these devices.
  • the operating system receives from the application a request to access one of the devices and translates this request into a request that will be understandable by that device.
  • the operating system sends the translated request to the device and typically informs the application program when the requested access is complete.
  • the operating system is responsible for managing the processing and transfer of information between various system resources.
  • Device drivers are software modules including processing logic for controlling the low level or device specific components of a particular computer system resource.
  • a device driver may be used for controlling a magnetic disk drive coupled to the computer system.
  • the device driver would control the various hardware specific registers, latches, signals, or other components of the magnetic disk drive device.
  • other computer system resources such as serial or parallel input/output (I/O) ports, modem devices, computer network interface devices, memory expansion boards, etc. are controlled by device drivers.
  • the device drivers are typically loaded into random access memory (RAM) during bootstrap initialization of the computer system.
  • an application program may request the operating system to read a file stored on a disk drive.
  • the operating system would invoke a device driver provided for the disk drive and send the device driver this read request.
  • the disk device driver would translate the read request by determining the actual disk location at which the blocks of the file are stored, and would send the read request to the disk drive.
  • the disk drive would then service the read request by reading the disk at the determined actual disk location, and then inform the device driver upon completion.
  • the device driver would then inform the application program that the request has been serviced.
  • a conventional method used for initially loading device driver software for controlling a peripheral device is to retrieve the driver software from a floppy disk or CD-ROM. Accordingly, peripheral devices are typically shipped from the manufacturer along with a floppy disk or CD-ROM containing the driver software for that device.
  • the appropriate driver software may be provided as a part of the operating system as shown above with respect to the disk drive driver. In this case, the user must properly identify the device added to the computer system in order for the appropriate driver to be loaded.
  • corporate computer users often have a plurality of different types of computers, each running a different operating system and using a variety of peripheral devices. As a result, the corporate computer user may need to maintain a library of device driver disks or CD-ROMS associated with a variety of peripheral devices. In the case where the appropriate device driver is selected from the operating system, the user must correctly identify the peripheral device. If the incorrect device driver is selected the peripheral device may malfunction.
  • Windows 95 made available most of the drivers for devices available on the market on a single CD-ROM.
  • an arguably unforseen problem with respect to providing the host computer with drivers via Windows 95 is that the device drivers provided with the software package increasingly become outdated as time passes.
  • new devices e.g., 56 K modems
  • the driver for which may not be on the Windows 95 CD-ROM which was installed years ago As a result, the user is back to the same situation when Windows 95 was not available. That is, the user is forced to have to separately obtain the driver for the new device and install it to the host computer typically via downloading the driver from a floppy diskette.
  • the present invention relates generally to a method and system for providing and installing a device driver, and more particularly to a system for integrating a device driver with the device itself.
  • the present invention overcomes the problems associated with conventional techniques for installing device drivers by incorporating the device driver within the device being installed.
  • the present invention further provides for a method for retrieving the device driver software from the peripheral device upon powering of the computer system the device has been newly added to. As a result of the driver being located within the device itself, the need to supply a separate disk or CD-ROM with each peripheral device is eliminated. This feature of the present invention removes the need to maintain disks or CD-ROMS containing device driver software.
  • the present invention provides for an integrated device driver system which automatically downloads the device driver to the computer system.
  • This aspect of the invention affords for minimal user intervention to load an appropriate device driver.
  • the integrated device driver system of the present invention may also includes a device driver that may be operating system and/or processor independent. This feature of the present invention allows the device being installed to the computer system to be platform independent, which affords for the device to be connectable and communicable with a variety of different computing systems.
  • a peripheral device operatively coupleable to a computing system, including: a processor for processing various functions relating to the operation of the peripheral device; and a memory operatively coupleable to the processor, the memory storing a device driver for the peripheral device.
  • a system for installing a peripheral device to a computer system including: a peripheral device operatively coupleable to the computer system, the peripheral device including a first processor and a first memory, the first memory storing a device driver for the peripheral device; a second processor for processing functions relating to the computer system, the second processor being operatively coupleable to the peripheral device; and a second memory operatively coupleable to the second processor; wherein the peripheral device downloads the device driver to the second memory after being operatively coupled to the computing system.
  • Another aspect of the present invention provides for a method for installing a peripheral device driver to a computer system, including the steps of: connecting a peripheral device to the computer system, the peripheral device including: a first processor for processing various functions relating to the operation of the peripheral device; and a first memory operatively coupleable to the processor, the first memory storing the peripheral device driver for the peripheral device; transferring the peripheral device driver from the first memory to the computer system, the computer system including: a second processor for processing functions relating to the computer system, the second processor being operatively coupleable to the peripheral device; and a second memory operatively coupleable to the second processor.
  • a method for installing a peripheral device driver to a computer system including the steps of: connecting a peripheral device to the computer system; and using the peripheral device to identify to the computer system a web site on an Internet having a peripheral device driver for the peripheral device.
  • FIG. 1 is a block diagram of an exemplary computer system in accordance with the present invention
  • FIG. 2 is an illustration of a computing system coupled to a peripheral printing device in accordance with one particular aspect of the present invention
  • FIG. 3 is a schematic block diagram showing a general laser printer in accordance with the present invention.
  • FIG. 4 is a flow diagram showing an overview of a peripheral device downloading a device driver to a computer system in accordance with the present invention
  • FIGS. 5a and 5b are illustrations of data packet formats in accordance with the present invention.
  • FIG. 6 is a flow diagram showing an overview of the procedure for configuring a computer system using Plug and Play (PNP) Industry Standard Architecture (ISA), according to one particular aspect of the present invention
  • FIG. 7 is a flow diagram of the procedure for downloading an I/O card driver according to one particular aspect of the present invention.
  • FIG. 8 is a flow diagram of the procedure for running an I/O card driver for downloading a peripheral device driver according to one particular aspect of the present invention.
  • FIG. 9 is a block diagram of a Universal Serial Bus (USB) configured system according to one particular aspect of the present invention.
  • USB Universal Serial Bus
  • FIG. 10 is a flow diagram showing an overview of the procedure for configuring a computer system having a USB configuration according to one particular aspect of the present invention.
  • FIG. 1 shows a simplified block diagram of an exemplary computer system 10.
  • Computer system 10 is generally comprised of a processor 12, a cache 14, a bus adapter 16, a system memory 18, adapters or I/O cards 32 and peripheral devices P1-P4.
  • the processor 12 is responsible for controlling the general operation of the computer system 10.
  • the processor 12 is programmed to control and operate the various components within the computer system 10 in order to carry out the various functions described herein.
  • the processor or CPU 12 can be any of a plurality of processors, such as the p24T, Pentium 50/75, Pentium 60/90, and Pentium 66/100, Pentium PRO and Pentium 2, and other similar and compatible processors.
  • the manner in which the processor 12 can be programmed to carry out the functions relating to the present invention will be readily apparent to those having ordinary skill in the art based on the description provided herein.
  • the system memory 18 tied to the processor 12 via a cpu memory bus 40 is also included in the computer system 10 and serves to store program code executed by the processor 12 for carrying out operating functions of the computer system 10 as described herein.
  • the system memory 18 also serves as a storage medium for temporarily storing information such tables, and the like.
  • the system memory 18 includes read only memory (ROM) and random access memory (RAM).
  • ROM read only memory
  • RAM random access memory
  • the ROM contains software instructions known as the Basic Input/Output System (BIOS) for performing interface operations with the I/O devices. Also stored in the ROM is a software routine which operates to load a boot program from the booting device. The boot program will typically be executed when the computer system 10 is powered on or when initialization of the system 10 is needed.
  • the RAM is the main memory into which the operating system and application programs are loaded. The RAM provides program instruction storage and working memory for the processor 12.
  • I/O bus 42 links bus adapter 16 to I/O cards 32, which interface with peripheral devices P1-P4.
  • Peripheral devices P1-P4 may take many forms including, but not limited to, a hard disk drive, a floppy disk drive, a printer, an optical storage device, a keyboard, a mouse, a display unit (e.g. an LCD display or CRT monitor), a modem, a bar code reader, a scanner, and a network.
  • I/O cards 32 are controller cards which enable processor 12 to communicate with and control the peripheral devices (P1-P4). In this regard, I/O cards 32 provide an interface port supporting the attachment of specific peripheral devices.
  • I/O card 32 may be a PC serial port adapter which creates a communications port where a modem can be attached. It should be appreciated that I/O cards 32 may be integrated on a PC's motherboard or on adapter boards that plug into expansion slots.
  • the I/O cards 32 communicate with the processor 12 by generating interrupts.
  • the processor 12 distinguishes interrupts from among the I/O cards 32 through individual interrupt codes assigned thereto. Responses of the processor 12 to the I/O card interrupts differ, depending, among other things, on the devices generating the interrupts. Interrupt vectors are provided to direct the processor 12 to different interrupt handling routines.
  • the interrupt vectors are generated during initialization (i.e., boot up) of the computer system 10 by execution of the BIOS. Because responses of the processor 12 to device interrupts may need to be changed from time to time, the interrupt vectors may need to be modified from time to time in order to direct the processor 12 to different interrupt handling routines. To allow for modification of the interrupt vectors, they are stored in the RAM during operation of the computer system 10.
  • I/O bus 42 may take many forms including, but not limited to, Integrated Standard Architecture (ISA), Extended Industry Standard Architecture (EISA), Peripheral Component Interconnect (PCI), Personal Computer Memory Card Industry Association (PCMCIA), Universal Serial Bus (USB), Small Computer System Interface (SCSI), Video Electronics Standards Association (VESA), Micro Channel Architecture (MCA), IEEE-1394 ("FireWire”), CardBus and proprietary.
  • ISA Integrated Standard Architecture
  • EISA Extended Industry Standard Architecture
  • PCI Peripheral Component Interconnect
  • PCMCIA Personal Computer Memory Card Industry Association
  • USB Universal Serial Bus
  • SCSI Small Computer System Interface
  • VESA Video Electronics Standards Association
  • MCA Micro Channel Architecture
  • IEEE-1394 IEEE-1394
  • FIG. 1 may be embodied in a personal computer, a portable computer, a workstation, a minicomputer, a main frame computer, a super computer, a network of computers, etc.
  • the details of the physical aspect of the computer system 10 such as structure of the I/O bus 42 or the number of processors 12 that are coupled to the bus 42, is not crucial to the operation of the invention and thus is not described in significant detail below.
  • the present invention will now be described with reference to computer system 10 as configured to include an ISA I/O bus, Plug and Play (PNP) ISA I/O controller cards (having a memory and a control unit), and a PNP BIOS.
  • PNP Plug and Play
  • this computer system 10 is described solely for the purpose of illustrating a preferred embodiment of the present invention, and not for limiting same. In this respect, the present invention is suitable for use with other computer system standards not specifically described herein.
  • the Plug and Play specification allows for the automatic configuration of Plug and Play expansion cards. Any conflict that may exist between different PNP cards is automatically resolved by the system.
  • the two key functions performed by the PNP system BIOS are resource management and runtime configuration.
  • the basic system resources which include the direct memory access (DMA) channels, interrupt request lines, and the I/O and memory addresses, are allocated by the PNP system BIOS in its resource management mode. Because there are thousands of expansion cards available, these system resources are commonly allocated in a conflicting manner in ISA systems, which can lead to bootstrap and system configuration failures.
  • the PNP system BIOS configures the PNP expansion cads before or during the Power On Self Test (POST) procedure.
  • POST Power On Self Test
  • the PNP system BIOS performs the same POST requirements of existing ISA computer systems.
  • the PNP expansion cards provide their resource requirements to allow the system BIOS to perform resource allocation and conflict resolution. After the configuration procedure is complete, POST is executed.
  • the printing system 50 consists of a printing device in the form of a laser printer 52 capable of performing print jobs according to print data, a data processing device in the form of a host computer 54 which provides the laser printer 52 with the print data, and a communication cable 56 connecting the laser printer 52 to the host computer 54.
  • a keyboard 58 is coupled to the host computer 54 to afford a user to manually enter data and instructions.
  • the laser printer 52 has a control unit generally indicated at 60 in FIG. 3.
  • the control unit 60 includes a video controller 62 and a DC controller 66.
  • the video controller 62 incorporates: a CPU (central processing unit) 70; a first ROM (read-only memory) 72; a second ROM (read-only memory) 74; a first RAM (random-access memory) 76; a second RAM 78; a timing control circuit 80; a bidirectional serial interface (I/F) 82; a video interface 84; a panel interface 88; and a data bus 96 which interconnects the elements of the video controller 62 described above.
  • a CPU central processing unit
  • the first ROM 72 stores: various control programs associated with printing operations of the printer 52; LANGUAGE INTERPRETER A and LANGUAGE INTERPRETER B for processing or interpreting printing control languages in which print data received from the host computer 54 are described or expressed; interpreter-identification data representative of the INTERPRETER A and INTERPRETER B; and an ID DATA OUTPUT control program for sending the interpreter-identification data to the personal computer PC in response to an inquiry signal from the personal computer PC, as described below.
  • the second ROM 74 stores outline data representative of the outlines of a multiplicity of characters such as letters and symbols to be printed according to the print data received from the personal computer PC.
  • the first RAM 76 has a suitable storage capacity for storing the print data and other data received from the personal computer PC
  • the second RAM 78 is a working memory which includes a storage area for storing a batch of dot data prepared by conversion from the print data stored in the first RAM 76.
  • the timing control circuit 80 generates timing signals for storing data into the first RAM 76 and reading out the data from the first RAM 76.
  • the serial interface (I/F) 82 functions to receive data from the host computer 54 and transmitting various sorts of data and signals to the host computer 54.
  • the video interface 84 consists of two scan buffers each of which is a dual-port RAM (FIFO memory) having a 4 K-byte capacity.
  • the video interface 84 functions to apply the dot data one set after another from the second RAM 78 to the DC controller 66.
  • the panel interface 88 is connected to an operator's panel 94 and a cassette sensor 96 of the laser printer 52.
  • the LANGUAGE INTERPRETER A is suitable for interpreting a printing control language (print data language) for a personal or office printer for ordinary text-oriented documentation, while the LANGUAGE INTERPRETER B is suitable for interpreting a printing control language (print data language) for a plotter generally used in the field of computer-aided design (CAD).
  • CAD computer-aided design
  • the interpreter-identification data which represent these INTERPRETERS A, B are stored in the first ROM 72, and are transmitted to the host computer 54 according to an ID DATA OUTPUT control program, in response to an inquiry signal from an host computer 54.
  • the cassette sensor 96 acts on a detecting piece provided at a suitable portion of a paper storage cassette mounted in the laser printer 52, so that the sensor 96 generates a paper size signal indicative of the size of paper sheets accommodated in the cassette.
  • the paper size signal is fed to the panel interface 88.
  • a main motor driver 100 for a main motor 102 there are connected a heater driver 104 for an image fixing heater 106, an electrical circuit 108, and a high-voltage unit 110.
  • a semiconductor lasing element in the form of a laser diode 112 there are also connected a scanner motor 114 for rotating a polygon mirror which has six light reflecting faces for scanning a photoconductive drum with the laser beam which is generated by the laser diode 112 and deflected by the polygon mirror, as well known in the art.
  • FIG. 3 is indicative of the hardware associated with a conventional laser printer, and thus further discussion with respect thereto is omitted for sake of brevity.
  • the present invention relates to the device driver for the printer 52 being located within the memory (e.g., ROM 72) of the printer 52.
  • the particular hardware associated with the peripheral device being employed is not critical to the present invention. Rather, it is to be appreciated that the present invention provides for a peripheral device which includes within its memory a device driver which is downloadable to a computing system so that the computing system can communicate with the peripheral device.
  • FIG. 4 a flow diagram showing an exemplary high-level implementation of one specific aspect of the present invention is shown. This example, relates to the printer 52 being newly added to the computer system 10. However, it will be appreciated that this implementation may be applied to any number and variety of peripheral devices suitable for carrying out the present invention.
  • step 120 the host computer 54 is booted up and general initializations are performed.
  • the processor 12 determines if there are any I/O cards 32 that have not been identified yet.
  • the I/O cards 32 can be located either within the host computer 54 or at the peripheral device (e.g., printer 52).
  • peripheral devices are Universal Serial Bus (USB) devices
  • USB Universal Serial Bus
  • the peripheral devices there will be a USB connector on the computer 54, which has a multidrop connector for incorporating the plurality of peripheral devices (e.g., P1-P4) to the host computer 54.
  • the USB provides for not having to attach independently all of the peripheral devices directly to the host computer 54 itself.
  • step 122 the processor 12 scans all devices connected to the system 10 and identifies in step 123 any new devices that have not been configured yet. This is accomplished by a sequence of events.
  • the processor 12 determines if there are any new devices connected to the system. If no new devices are found in step 120, the processor 12 proceeds to step 124 where it completes its bootup procedure. If a new device (e.g. printer 52) is found, the processor 12 in step 126 queries the printer 52 for what resources the printer 52 needs (e.g., how many interrupts does the printer 52 need, does the printer 52 need any DMA channels, how much address space does the printer 52 need, etc.). In step 126, the printer 52 replies with what its needs are. The processor 12 looks at a table of resources stored within the system memory 18 for the requested resources. The processor 12 assigns the resources and tells the printer 42 what resources it has.
  • the processor 12 initiates a driver download sequence in step 128.
  • the driver download sequence can be implemented just before Windows 95 is complete.
  • a device e.g., I/O card 32 and/or peripheral device P1-P4
  • the driver sequence can be implemented during the PNP sequence.
  • This step involves downloading the peripheral device driver from the peripheral device to the host computer 54.
  • the driver can be stored in flash memory of the I/O card 32 if desired.
  • the peripheral device stores its driver within its own memory and during the PNP sequence it downloads the driver to the memory (e.g., hard disk) of the host computer 54.
  • the host computer 54 via the I/O card 32 prompts the peripheral device 52 to download the driver. Since the I/O address has already been assigned to the device 52, and the host computer 54 can talk to the device 52, it will send a unique command to the device 52 via a base address. This unique command will prompt the device 52 to download the driver code to the host computer.
  • the driver is written in a processor independent language such as "C", JAVA, etc. If JAVA is employed the driver becomes platform independent and thus the device can be hooked up to any type of computer due to being platform independent. The peripheral device will go into driver download mode.
  • the manner for downloading will vary based on the type of interface between the host computer and the device. For example, if an ISA interface is being employed the device 52 will use an ISA data bus and download 8 to 16 bits per time of the JAVA or C driver code. Thus, the driver will be installed from the device to the host computer byte by byte over the ISA bus. If the interface is a USB, the code will be downloaded via a serial packet. A typical packet format would be used with a header, etc. The packet will go back via the bus to the host computer 54. The host computer 54 would reconstrust the packet back into the original driver code, and send a command back to the peripheral device 52 to end the downloading of the device driver. The USB interface chip plus host software would handle the receiving of the packet.
  • FIGS. 5a and 5b illustrate exemplary packet formats for carrying out the present invention.
  • step 130 instructs the printer 52 that it is programmed and that it should no longer respond as unprogrammed.
  • the printer 52 will respond as configured.
  • Each packet includes a number of fields such as a synchronization field 150, a header field 152, a source address field 154, a destination address field 156, a data field 158, and an error correcting field (CRC) 160, for example.
  • the synchronization field 150 includes synchronizing bits which allow a device (e.g., host computer 54) receiving the packet an opportunity to "sync" to the packet as is conventional.
  • the header field 152 follows the synchronization field 150 and includes information such as the length and type of the packet.
  • the header field 152 may indicate whether the packet is a type which requires a response from the receiving device (e.g., host computer 54).
  • the source address field 154 follows the header field 152 and includes an address of the device (e.g., printer 52) from which the packet originated. Following the source address field 154, the packet includes a destination address field 156 which holds the address of the device (host computer 54) to which the packet is ultimately destined.
  • the data field 158 in the packet includes various information (see FIG. 4B) intended to be communicated to the receiving device.
  • the packet ends with a cyclical redundancy code (CRC) field 160 which serves as an error correcting field according to the conventional techniques such that a receiving device can determine if it has properly received the packet.
  • CRC cyclical redundancy code
  • FIG. 5B illustrates in greater detail the information contained in the data field 158 of packets transmitted from peripheral devices P1-P4 to the host computer 54.
  • the data field 158 includes a transmission type field 170 which identifies the type of transmission being made by the peripheral device P1-P4 to the destination device. For example, the transmission type field 170 may indicate that the transmission being made is that of a device driver being downloaded.
  • the data field 158 also includes a device ID field 172 which contains an identification code for the particular peripheral device P1. The identification code identifies and distinguishes the peripheral device P1 to the system 10 with respect to other peripheral devices within the computer system 10.
  • the data field 208 further includes a driver field 176 which contains a compressed version of the device driver which is later expanded to the processor 12 upon stripping the packet for the device driver.
  • FIG. 6 there is shown an overview of an ISA configuration flow for a computer system having a PNP BIOS. It should be appreciated that the ISA configuration flow disclosed herein is slightly modified for use with a non-PNP BIOS.
  • the computer system 10 e.g., a PC running Microsoft WINDOWS 95 operating system
  • all PNP I/O cards are initially set in an inactive mode and do not respond to any ISA bus commands.
  • all PNP I/O 32 cards are put in configuration mode by the computer system's software issuing an initiation key sequence.
  • the initiation key sequence includes a series of I/O port writes to auto configuration I/O port registers on each PNP I/O card 32. All of the PNP I/O cards 32 simultaneously check the initiation key sequence. If the initiation key sequence is properly received, the PNP I/O card 32 will set itself to configuration mode in step 202.
  • each PNP I/O card is isolated one at a time.
  • each PNP I/O 32 card is isolated using feedback data on the I/O bus 42, which uniquely isolates each PNP I/O card 32 by a 72-bit serial identification code.
  • Each PNP I/O card is assigned a serial identification code that is stored in memory on the PNP I/O card 32.
  • a handle i.e., Card Select Number
  • the PNP I/O card's resource data structure is read by the processor 12
  • the I/O card driver is downloaded to the processor 12 from the isolated PNP I/O card 32.
  • the handle provides means for selecting a unique PNP I/O card 32 without the need to use the more elaborate and time consuming isolation protocols.
  • the resource data structure is read by the processor 12 by writing the address of a desired PNP register to an ADDRESS port, followed by a read of data from the READ -- DATA port.
  • the READ -- DATA port is used to read information from the PNP registers.
  • a bus width of data i.e. data the size of the width of I/O bus 42
  • data is read from the READ -- DATA port a plurality of times to obtain the complete resource data structure.
  • the resource data structure describes the resources supported and those requested by the functions on the isolated PNP I/O card. When all resource capabilities and demands are known, a process of resource arbitration is invoked to determine resource allocation to each PNP I/O card 32.
  • the procedure for downloading the I/O card driver will be described in detail with reference to a flow diagram.
  • the file size of the I/O card driver is read from the PNP I/O card 32 by the processor 12.
  • the processor 12 writes the address of a desired register to the ADDRESS port, followed by a read of data from the READ -- DATA port.
  • the processor 12 writes the address of a desired register to the ADDRESS port, followed by a read of data from the READ -- DATA port, in order to obtain I/O card driver data.
  • a bus width of data i.e.
  • the processor in step 226 will read I/O card driver data from the READ -- DATA port a plurality of times to obtain all of the I/O card driver data. Once all of the I/O driver data has been obtained, the process is ended. The number of read requests is based upon the I/O card driver file size. The complete I/O card driver data forms an I/O card driver file, which is stored in the system memory 18.
  • step 230 it is determined if another PNP I/O card needs to be isolated for configuration. If no further PNP I/O cards 32 need to be isolated, then the processor 12 in step 232 determines that the resource requirements and capabilities for all I/O cards have been determined. If in step 230 it is determined that more PNP I/O cards need to be configured, the processor 12 returns to step 202. In step 234, the handles are then used to assign conflict free resources to each PNP I/O card 32. Thereafter, in step 240, all of the PNP I/O cards 32 are activated to respectively remove them from configuration mode.
  • each I/O card driver file includes an initialization portion which is run at start-up.
  • a peripheral device e.g., printer 52
  • a peripheral device driver e.g., where the PNP I/O card includes a parallel port, such as an Enhanced Parallel Port
  • a peripheral device driver is loaded.
  • the processor 12 determines whether a peripheral device driver is needed.
  • the processor 12 in step 258 reads the peripheral device driver file size from a memory storage device in the peripheral device.
  • the processor 12 executes the initialization routine to read the peripheral device driver file size from a memory storage device in the peripheral device.
  • the processor 12 executing the initialization routine reads the peripheral device driver file size from a predetermined address (e.g., specified in the Enhanced Parallel Port specification).
  • the peripheral device driver file size is read by the processor 12 by writing the address of a desired memory location to an ADDRESS port, followed by a read of data from a READ -- DATA port.
  • a processing unit e.g., CPU 70 of printer 52 in the peripheral device responds with data at the READ -- DATA port representing the size of the peripheral device driver file.
  • the processor 12 reads the peripheral device driver data from the memory in the peripheral device (e.g., printer 52). Accordingly, the ADDRESS and READ -- DATA ports are accessed to obtain the peripheral device driver data.
  • a bus width of data i.e. data the size of the width of I/O bus 30
  • the processor 12 in steps 260 and 262 will read data from the READ -- DATA port multiple times in order to obtain all of the peripheral device driver data.
  • the number of read requests is based upon the peripheral device driver file size.
  • the peripheral device driver data read from the memory of the peripheral device comprises the complete peripheral device driver file.
  • the peripheral device driver file is downloaded each time the computer system 10 is powered on with the peripheral device (P1-P4) attached to an I/O card 32.
  • the present invention may be modified such that the peripheral device driver file need only be downloaded once from the peripheral device (P1-P4), and thereafter it is retrieved directly from system memory 18 or from an external storage device (e.g., hard disk drive).
  • USB Universal Serial Bus
  • CTI Computer Telephony Integration
  • D+ D+, D- and GND
  • USB standard allows for the daisy chaining of peripheral devices.
  • a USB 300 is shown connect USB devices with a USB host.
  • the USB physical interconnect is a tiered star topology.
  • a hub is at the center of each star.
  • Each wire segment is a point-to-point connection between the host and a hub or function, or a hub connected to another hub or function.
  • a USB system has only one host.
  • the USB interface to the host computer system is known as the "host controller.”
  • the host controller may be implemented in a combination of hardware, firmware, or software.
  • a root hub is integrated within the host system to provide one or more attachment points.
  • USB devices are hubs (which provide additional attachment points to the USB) and functions (which provide capabilities to the computer system; e.g., an ISDN connection, a printer, a keyboard, a mouse, a digital joystick, speakers and other peripheral devices).
  • USB devices present a standard USB interface in terms of their comprehension of the USB protocol, response to standard USB operations such as configuration and reset, and standard capability descriptive information.
  • USB devices attach to the USB via a port on a USB hub.
  • the hub indicates attachment or removal of a USB device in its per port status.
  • the host queries the hub to determine the reason for the notification.
  • the hub responds by identifying the port used to attach the USB device.
  • the host enables the port, and addresses the USB device with a control pipe using a USB Default Address. All USB devices are addressed using the USB Default Address when initially connected or after they have been reset.
  • the host determines if the newly attached USB device is a hub or a function (e.g., peripheral device) and assigns a unique USB address to the USB device.
  • the host establishes a control pipe for the USB device using the assigned USB address and endpoint number zero. If the attached USB device is a hub and USB devices are attached to its ports, then the above procedure is followed for each of the attached USB devices. If the attached USB device is a function, then attachment notifications will be dispatched by USB software to interested host software.
  • FIG. 9 shows a USB-configured computer system 300.
  • Computer system 300 includes a host 302, a hub 304 and devices 308.
  • pull-down resistors will cause both voltages D+and D- to be pulled below a single-ended low threshold of 0.6 V at the host or hub port. This creates a state called a "single-ended zero" on the downstream port.
  • a disconnect condition is indicated if a "single-ended zero" persists on a downstream port for more than 2.5 ⁇ s.
  • a connect condition is detected when a device 308 is connected to the host or hub's port, and one of the data lines is pulled above the single-ended high threshold level of 1.5 V for more than 2.3 ⁇ s.
  • hub 304 When hub 304 detects the presence of the new device 308, it reports the presence of the new device 308 to host 302.
  • Host 302 manages an address table and determines an address for the new device 308. The address for the new device is communicated by the host 302 to hub 304. Hub 304 and the host 302 initially communicate with the new device by use of the USB default address. As indicated above, the initial communication assigns a unique address to the new device 308, and thereafter all communications with the new device 308 take place via the unique address.
  • the new device 308 reports configuration data back to hub 304.
  • hub 304 relays the configuration data to host 302. The configuration data identifies the device driver stored in a data storage means in the device.
  • host 302 requests a device driver from the new device 308.
  • the new device 308 sends a device driver to the host 302. Thereafter, the host 302 loads and runs the device driver.
  • FIGS. 5a and 5b illustrate exemplary packet formats for carrying out the present invention.
  • FIG. 10 shows a flow diagram summarizing the procedure for configuring the USB computer system 300.
  • the new device 308 is detected at the hub.
  • the presence of the new device 308 is reported to the host 302 to obtain a unique address for the new device 308.
  • the host 302 assigns a unique address to the device 308. As noted above, an USB default address is used for initial communication.
  • configuration data is obtained from the new device 308, which in turn allows the device driver to be downloaded from the device in step 328.
  • the I/O card driver data stored in the I/O card 32, or the peripheral device driver data stored in the peripheral device (P1-P4) may be suitably modified to specify a web site location (URL) on the Internet, where a most up-to-date peripheral device driver is posted. This up-to-date peripheral device driver could then be automatically downloaded to the computer system 10. Accordingly, the present invention can be utilized to install and maintain peripheral devices with the most current and compatible peripheral device driver software.
  • the peripheral device driver file may be suitably coded in JAVA or other cross-platform procedural programming language (e.g., "C").
  • Java is an object-oriented, distributed secure, architecture neutral language. Java provides for object-oriented design which facilitates the clean definition of interfaces and makes it possible to provide reusable "software ICs.” Java has an extensive library of routines for copying easily with TCP/IP protocols like HTTP and FTP.
  • Java applications can open and access objects across a network via URLs with the same ease to which programmers are accustomed to accessing a local file system.
  • Java has a pointer model that eliminates the possibility of overwriting memory and corrupting data.
  • Java has true arrays. This affords for subscript checking to be performed.
  • it is not possible to turn an arbitrary integer into a pointer by casting.
  • Java affords for the support of applications on networks. Networks are composed of a variety of systems with a variety of CPU and operating system architectures. To enable a Java application to execute anywhere on the network, a compiler generates an architecture neutral object file format--the compiled code is executable on many processors, given the presence of the Java runtime system. Thus, Java is useful not only for networks but also for single system software distribution. In the present personal computer market, application writers have to produce versions of their applications that are compatible with the IBM PC and with the Apple Macintosh. However, with Java, the same version of the application runs on all platforms. The Java compiler accomplishes this by generating bytecode instructions which have nothing to do with a particular computer architecture. Rather, they are designed to be both easy to interpret on any machine and easily translated into native machine code on the fly.
  • Java interpreter can execute Java bytecodes directly on any machine to which the interpreter has been ported. Since linking is a more incremental and lightweight process, the development process can be much more rapid and exploratory. As part of the bytecode stream, more compile-time information is carried over and available at runtime.
  • the present invention through the use of Java affords for multiplatforming. That is the same peripheral device driver can be run on substantially all computers - the same applet (a program designed to be delivered through a browser) can work on a Macintosh, a Windows 95 machine, a Sun workstation, etc.
  • a network connection and a network browser such as Netscape Navigator or Microsoft Internet Explorer may be used in at least one embodiment of the present invention.
  • the present invention allows the peripheral device driver file to be both processor and operating system independent.
  • a single peripheral device driver would be suitable for use in connection with a Pentium PC running OS/2, a Pentium PC running WINDOWS95, a Power PC running MAC OS, or any other processor or operating system (e.g., UNIX).
  • the peripheral device driver could be coded in object code, thus providing an operating system independent code. Accordingly, the present invention can be utilized to provide easy-to-install peripheral devices, which are compatible with a wide variety of computer systems.
  • the present invention provides integrating a device driver with the device itself.
  • the present invention overcomes the problems associated with conventional techniques for installing device drivers.
  • the present invention further provides for a method for retrieving the device driver software from the peripheral device upon powering of a computer system the device has been newly added to.
  • the driver being located within the device itself, the need to supply a separate disk or CD-ROM with each peripheral device is eliminated. This feature of the present invention removes the need to maintain disks or CD-ROMS containing device driver software.

Abstract

A peripheral device operatively coupleable to a computing system which includes a processor for processing various functions relating to the operation of the peripheral device. The peripheral device also including a memory operatively coupleable to the processor, the memory storing a device driver which the computing system employs to communicate with the peripheral device.

Description

FIELD OF THE INVENTION
The present invention relates generally to a method and system for providing and installing a device driver, and more particularly to a method and system for integrating a device driver with the device itself.
BACKGROUND OF THE INVENTION
A computer system typically is connected to various peripheral devices, which include disk drives, tape drives, printers, modems, etc. The computer system has an operating system that provides an interface between an application program and these devices. The operating system receives from the application a request to access one of the devices and translates this request into a request that will be understandable by that device. The operating system sends the translated request to the device and typically informs the application program when the requested access is complete.
In particular, the operating system is responsible for managing the processing and transfer of information between various system resources. One well known technique for managing these resources is the use of device drivers. Device drivers are software modules including processing logic for controlling the low level or device specific components of a particular computer system resource. For example, a device driver may be used for controlling a magnetic disk drive coupled to the computer system. In this example, the device driver would control the various hardware specific registers, latches, signals, or other components of the magnetic disk drive device. Similarly, other computer system resources such as serial or parallel input/output (I/O) ports, modem devices, computer network interface devices, memory expansion boards, etc. are controlled by device drivers. The device drivers are typically loaded into random access memory (RAM) during bootstrap initialization of the computer system.
For instance, an application program may request the operating system to read a file stored on a disk drive. The operating system would invoke a device driver provided for the disk drive and send the device driver this read request. The disk device driver would translate the read request by determining the actual disk location at which the blocks of the file are stored, and would send the read request to the disk drive. The disk drive would then service the read request by reading the disk at the determined actual disk location, and then inform the device driver upon completion. The device driver would then inform the application program that the request has been serviced.
A conventional method used for initially loading device driver software for controlling a peripheral device is to retrieve the driver software from a floppy disk or CD-ROM. Accordingly, peripheral devices are typically shipped from the manufacturer along with a floppy disk or CD-ROM containing the driver software for that device. Alternatively, the appropriate driver software may be provided as a part of the operating system as shown above with respect to the disk drive driver. In this case, the user must properly identify the device added to the computer system in order for the appropriate driver to be loaded.
Corporate computer users often have a plurality of different types of computers, each running a different operating system and using a variety of peripheral devices. As a result, the corporate computer user may need to maintain a library of device driver disks or CD-ROMS associated with a variety of peripheral devices. In the case where the appropriate device driver is selected from the operating system, the user must correctly identify the peripheral device. If the incorrect device driver is selected the peripheral device may malfunction.
Keeping separate floppy diskettes for each type of driver needed on a system oftentimes quickly proves to be an unmanageable task. For instance, in a large company with hundreds of computers, managing all of the different I/O cards for the various computers and the associated drivers which keep changing as devices are relocated from one computer to another became a logistical nightmare.
Microsoft Corporation introduced Windows 95 to remedy the above problem. Windows 95 made available most of the drivers for devices available on the market on a single CD-ROM. However, an arguably unforseen problem with respect to providing the host computer with drivers via Windows 95 is that the device drivers provided with the software package increasingly become outdated as time passes. Thus, as new devices (e.g., 56 K modems) are bought by a user of the system, the driver for which may not be on the Windows 95 CD-ROM which was installed years ago. As a result, the user is back to the same situation when Windows 95 was not available. That is, the user is forced to have to separately obtain the driver for the new device and install it to the host computer typically via downloading the driver from a floppy diskette.
Consequently, there is a strong need for a convenient and reliable method and system for obtaining an appropriate device driver for a peripheral device, which avoids the need for a user to have to manually download the device driver when incorporating the new device to a computing system.
SUMMARY OF THE INVENTION
The present invention relates generally to a method and system for providing and installing a device driver, and more particularly to a system for integrating a device driver with the device itself. The present invention overcomes the problems associated with conventional techniques for installing device drivers by incorporating the device driver within the device being installed. The present invention further provides for a method for retrieving the device driver software from the peripheral device upon powering of the computer system the device has been newly added to. As a result of the driver being located within the device itself, the need to supply a separate disk or CD-ROM with each peripheral device is eliminated. This feature of the present invention removes the need to maintain disks or CD-ROMS containing device driver software.
Additionally, the present invention provides for an integrated device driver system which automatically downloads the device driver to the computer system. This aspect of the invention affords for minimal user intervention to load an appropriate device driver. The integrated device driver system of the present invention may also includes a device driver that may be operating system and/or processor independent. This feature of the present invention allows the device being installed to the computer system to be platform independent, which affords for the device to be connectable and communicable with a variety of different computing systems.
In accordance with one particular aspect of the present invention, a peripheral device operatively coupleable to a computing system is provided, including: a processor for processing various functions relating to the operation of the peripheral device; and a memory operatively coupleable to the processor, the memory storing a device driver for the peripheral device.
According to another aspect of the present invention, a system for installing a peripheral device to a computer system is provided, including: a peripheral device operatively coupleable to the computer system, the peripheral device including a first processor and a first memory, the first memory storing a device driver for the peripheral device; a second processor for processing functions relating to the computer system, the second processor being operatively coupleable to the peripheral device; and a second memory operatively coupleable to the second processor; wherein the peripheral device downloads the device driver to the second memory after being operatively coupled to the computing system.
Another aspect of the present invention provides for a method for installing a peripheral device driver to a computer system, including the steps of: connecting a peripheral device to the computer system, the peripheral device including: a first processor for processing various functions relating to the operation of the peripheral device; and a first memory operatively coupleable to the processor, the first memory storing the peripheral device driver for the peripheral device; transferring the peripheral device driver from the first memory to the computer system, the computer system including: a second processor for processing functions relating to the computer system, the second processor being operatively coupleable to the peripheral device; and a second memory operatively coupleable to the second processor.
In accordance with still another aspect of the present invention, a method for installing a peripheral device driver to a computer system is provided, including the steps of: connecting a peripheral device to the computer system; and using the peripheral device to identify to the computer system a web site on an Internet having a peripheral device driver for the peripheral device.
To the accomplishment of the foregoing and related ends, the invention, then, comprises the features hereinafter fully described and particularly pointed out in the claims. The following description and annexed drawings set forth in detail certain illustrative embodiments of the invention. These embodiments are indicative, however, of but a few of the various ways in which the principles of the invention may be employed. Other objects, advantages and novel features of the invention will become apparent from the following detailed description of the invention when considered in conjunction with the drawings.
BRIEF DESCRIPTION OF THE DRAWINGS
The invention may take physical form in certain parts and arrangements of parts, a preferred embodiment and method of which will be described in detail in this specification and illustrated in the accompanying drawings which form a part hereof, and wherein:
FIG. 1 is a block diagram of an exemplary computer system in accordance with the present invention;
FIG. 2 is an illustration of a computing system coupled to a peripheral printing device in accordance with one particular aspect of the present invention;
FIG. 3 is a schematic block diagram showing a general laser printer in accordance with the present invention;
FIG. 4 is a flow diagram showing an overview of a peripheral device downloading a device driver to a computer system in accordance with the present invention;
FIGS. 5a and 5b are illustrations of data packet formats in accordance with the present invention;
FIG. 6 is a flow diagram showing an overview of the procedure for configuring a computer system using Plug and Play (PNP) Industry Standard Architecture (ISA), according to one particular aspect of the present invention;
FIG. 7 is a flow diagram of the procedure for downloading an I/O card driver according to one particular aspect of the present invention;
FIG. 8 is a flow diagram of the procedure for running an I/O card driver for downloading a peripheral device driver according to one particular aspect of the present invention;
FIG. 9 is a block diagram of a Universal Serial Bus (USB) configured system according to one particular aspect of the present invention; and
FIG. 10 is a flow diagram showing an overview of the procedure for configuring a computer system having a USB configuration according to one particular aspect of the present invention.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT
The drawings are now referred to which are for purposes of illustrating the preferred embodiment of the invention only and not for purposes of limiting the same. In the drawings, like reference numerals are used to refer to like elements throughout.
FIG. 1 shows a simplified block diagram of an exemplary computer system 10. Computer system 10 is generally comprised of a processor 12, a cache 14, a bus adapter 16, a system memory 18, adapters or I/O cards 32 and peripheral devices P1-P4.
The processor 12 is responsible for controlling the general operation of the computer system 10. The processor 12 is programmed to control and operate the various components within the computer system 10 in order to carry out the various functions described herein. The processor or CPU 12 can be any of a plurality of processors, such as the p24T, Pentium 50/75, Pentium 60/90, and Pentium 66/100, Pentium PRO and Pentium 2, and other similar and compatible processors. The manner in which the processor 12 can be programmed to carry out the functions relating to the present invention will be readily apparent to those having ordinary skill in the art based on the description provided herein.
The system memory 18 tied to the processor 12 via a cpu memory bus 40 is also included in the computer system 10 and serves to store program code executed by the processor 12 for carrying out operating functions of the computer system 10 as described herein. The system memory 18 also serves as a storage medium for temporarily storing information such tables, and the like.
The system memory 18 includes read only memory (ROM) and random access memory (RAM). The ROM contains software instructions known as the Basic Input/Output System (BIOS) for performing interface operations with the I/O devices. Also stored in the ROM is a software routine which operates to load a boot program from the booting device. The boot program will typically be executed when the computer system 10 is powered on or when initialization of the system 10 is needed. The RAM is the main memory into which the operating system and application programs are loaded. The RAM provides program instruction storage and working memory for the processor 12.
Processor 12, cache 14, bus adapter 16 and system memory 18 communicate via the processor-memory bus 20. An I/O bus 42 links bus adapter 16 to I/O cards 32, which interface with peripheral devices P1-P4. Peripheral devices P1-P4 may take many forms including, but not limited to, a hard disk drive, a floppy disk drive, a printer, an optical storage device, a keyboard, a mouse, a display unit (e.g. an LCD display or CRT monitor), a modem, a bar code reader, a scanner, and a network. I/O cards 32 are controller cards which enable processor 12 to communicate with and control the peripheral devices (P1-P4). In this regard, I/O cards 32 provide an interface port supporting the attachment of specific peripheral devices. For instance, I/O card 32 may be a PC serial port adapter which creates a communications port where a modem can be attached. It should be appreciated that I/O cards 32 may be integrated on a PC's motherboard or on adapter boards that plug into expansion slots.
Typically, the I/O cards 32 communicate with the processor 12 by generating interrupts. The processor 12 distinguishes interrupts from among the I/O cards 32 through individual interrupt codes assigned thereto. Responses of the processor 12 to the I/O card interrupts differ, depending, among other things, on the devices generating the interrupts. Interrupt vectors are provided to direct the processor 12 to different interrupt handling routines.
The interrupt vectors are generated during initialization (i.e., boot up) of the computer system 10 by execution of the BIOS. Because responses of the processor 12 to device interrupts may need to be changed from time to time, the interrupt vectors may need to be modified from time to time in order to direct the processor 12 to different interrupt handling routines. To allow for modification of the interrupt vectors, they are stored in the RAM during operation of the computer system 10.
I/O bus 42 may take many forms including, but not limited to, Integrated Standard Architecture (ISA), Extended Industry Standard Architecture (EISA), Peripheral Component Interconnect (PCI), Personal Computer Memory Card Industry Association (PCMCIA), Universal Serial Bus (USB), Small Computer System Interface (SCSI), Video Electronics Standards Association (VESA), Micro Channel Architecture (MCA), IEEE-1394 ("FireWire"), CardBus and proprietary.
The components illustrated in FIG. 1 may be embodied in a personal computer, a portable computer, a workstation, a minicomputer, a main frame computer, a super computer, a network of computers, etc. As such, the details of the physical aspect of the computer system 10 such as structure of the I/O bus 42 or the number of processors 12 that are coupled to the bus 42, is not crucial to the operation of the invention and thus is not described in significant detail below.
The present invention will now be described with reference to computer system 10 as configured to include an ISA I/O bus, Plug and Play (PNP) ISA I/O controller cards (having a memory and a control unit), and a PNP BIOS. However, it should be appreciated that this computer system 10 is described solely for the purpose of illustrating a preferred embodiment of the present invention, and not for limiting same. In this respect, the present invention is suitable for use with other computer system standards not specifically described herein.
The Plug and Play specification allows for the automatic configuration of Plug and Play expansion cards. Any conflict that may exist between different PNP cards is automatically resolved by the system. The two key functions performed by the PNP system BIOS are resource management and runtime configuration. The basic system resources which include the direct memory access (DMA) channels, interrupt request lines, and the I/O and memory addresses, are allocated by the PNP system BIOS in its resource management mode. Because there are thousands of expansion cards available, these system resources are commonly allocated in a conflicting manner in ISA systems, which can lead to bootstrap and system configuration failures. In its role as resource manager, the PNP system BIOS configures the PNP expansion cads before or during the Power On Self Test (POST) procedure. The PNP system BIOS performs the same POST requirements of existing ISA computer systems. During the PNP configuration phase, the PNP expansion cards provide their resource requirements to allow the system BIOS to perform resource allocation and conflict resolution. After the configuration procedure is complete, POST is executed.
After the POST procedure is completed, control is transferred from the system BIOS to the operating system software. However, in runtime configuration mode, the system BIOS does not provide configuration services for system board devices after the POST procedure has finished. This feature allows the system BIOS to dynamically change the resources allocated to system board devices after the operating system has been loaded thereby allowing the operating system software to manipulate the configuration of the system board devices. The Plug and Play ISA specification by Microsoft Corp. is hereby incorporated herein by reference in its entirety.
Referring now to FIG. 2, there is shown a printing system 50 in accordance with one specific aspect of the present invention. However, it should be appreciated that the present invention can be applied to any computer system including a peripheral device suitable for carrying out the present invention. The printing system 50 consists of a printing device in the form of a laser printer 52 capable of performing print jobs according to print data, a data processing device in the form of a host computer 54 which provides the laser printer 52 with the print data, and a communication cable 56 connecting the laser printer 52 to the host computer 54. A keyboard 58 is coupled to the host computer 54 to afford a user to manually enter data and instructions.
The laser printer 52 has a control unit generally indicated at 60 in FIG. 3. The control unit 60 includes a video controller 62 and a DC controller 66. The video controller 62 incorporates: a CPU (central processing unit) 70; a first ROM (read-only memory) 72; a second ROM (read-only memory) 74; a first RAM (random-access memory) 76; a second RAM 78; a timing control circuit 80; a bidirectional serial interface (I/F) 82; a video interface 84; a panel interface 88; and a data bus 96 which interconnects the elements of the video controller 62 described above.
The first ROM 72 stores: various control programs associated with printing operations of the printer 52; LANGUAGE INTERPRETER A and LANGUAGE INTERPRETER B for processing or interpreting printing control languages in which print data received from the host computer 54 are described or expressed; interpreter-identification data representative of the INTERPRETER A and INTERPRETER B; and an ID DATA OUTPUT control program for sending the interpreter-identification data to the personal computer PC in response to an inquiry signal from the personal computer PC, as described below.
The second ROM 74 stores outline data representative of the outlines of a multiplicity of characters such as letters and symbols to be printed according to the print data received from the personal computer PC. The first RAM 76 has a suitable storage capacity for storing the print data and other data received from the personal computer PC, and the second RAM 78 is a working memory which includes a storage area for storing a batch of dot data prepared by conversion from the print data stored in the first RAM 76. The timing control circuit 80 generates timing signals for storing data into the first RAM 76 and reading out the data from the first RAM 76. The serial interface (I/F) 82 functions to receive data from the host computer 54 and transmitting various sorts of data and signals to the host computer 54. The video interface 84 consists of two scan buffers each of which is a dual-port RAM (FIFO memory) having a 4 K-byte capacity.
The video interface 84 functions to apply the dot data one set after another from the second RAM 78 to the DC controller 66. The panel interface 88 is connected to an operator's panel 94 and a cassette sensor 96 of the laser printer 52. The LANGUAGE INTERPRETER A is suitable for interpreting a printing control language (print data language) for a personal or office printer for ordinary text-oriented documentation, while the LANGUAGE INTERPRETER B is suitable for interpreting a printing control language (print data language) for a plotter generally used in the field of computer-aided design (CAD).
As described above, the interpreter-identification data which represent these INTERPRETERS A, B are stored in the first ROM 72, and are transmitted to the host computer 54 according to an ID DATA OUTPUT control program, in response to an inquiry signal from an host computer 54. The cassette sensor 96 acts on a detecting piece provided at a suitable portion of a paper storage cassette mounted in the laser printer 52, so that the sensor 96 generates a paper size signal indicative of the size of paper sheets accommodated in the cassette. The paper size signal is fed to the panel interface 88.
To the DC controller 66 of the control unit 60, there are connected a main motor driver 100 for a main motor 102, a heater driver 104 for an image fixing heater 106, an electrical circuit 108, and a high-voltage unit 110. To the DC controller 66, there are also connected a semiconductor lasing element in the form of a laser diode 112, and a scanner motor 114 for rotating a polygon mirror which has six light reflecting faces for scanning a photoconductive drum with the laser beam which is generated by the laser diode 112 and deflected by the polygon mirror, as well known in the art. FIG. 3 is indicative of the hardware associated with a conventional laser printer, and thus further discussion with respect thereto is omitted for sake of brevity.
It will be appreciated that the present invention relates to the device driver for the printer 52 being located within the memory (e.g., ROM 72) of the printer 52. Thus, the particular hardware associated with the peripheral device being employed is not critical to the present invention. Rather, it is to be appreciated that the present invention provides for a peripheral device which includes within its memory a device driver which is downloadable to a computing system so that the computing system can communicate with the peripheral device.
Referring now to FIG. 4, a flow diagram showing an exemplary high-level implementation of one specific aspect of the present invention is shown. This example, relates to the printer 52 being newly added to the computer system 10. However, it will be appreciated that this implementation may be applied to any number and variety of peripheral devices suitable for carrying out the present invention.
In step 120, the host computer 54 is booted up and general initializations are performed. During this bootup procedure the processor 12 determines if there are any I/O cards 32 that have not been identified yet. The I/O cards 32 can be located either within the host computer 54 or at the peripheral device (e.g., printer 52).
For example, if the peripheral devices are Universal Serial Bus (USB) devices, there will be a USB connector on the computer 54, which has a multidrop connector for incorporating the plurality of peripheral devices (e.g., P1-P4) to the host computer 54. The USB provides for not having to attach independently all of the peripheral devices directly to the host computer 54 itself.
In step 122, the processor 12 scans all devices connected to the system 10 and identifies in step 123 any new devices that have not been configured yet. This is accomplished by a sequence of events. As mentioned above, in step 120, the processor 12 determines if there are any new devices connected to the system. If no new devices are found in step 120, the processor 12 proceeds to step 124 where it completes its bootup procedure. If a new device (e.g. printer 52) is found, the processor 12 in step 126 queries the printer 52 for what resources the printer 52 needs (e.g., how many interrupts does the printer 52 need, does the printer 52 need any DMA channels, how much address space does the printer 52 need, etc.). In step 126, the printer 52 replies with what its needs are. The processor 12 looks at a table of resources stored within the system memory 18 for the requested resources. The processor 12 assigns the resources and tells the printer 42 what resources it has.
After, the assignment, the processor 12 initiates a driver download sequence in step 128. The driver download sequence can be implemented just before Windows 95 is complete. Thus, when a device (e.g., I/O card 32 and/or peripheral device P1-P4) is found that requires a driver, the driver sequence can be implemented during the PNP sequence. This step involves downloading the peripheral device driver from the peripheral device to the host computer 54. The driver can be stored in flash memory of the I/O card 32 if desired. The peripheral device stores its driver within its own memory and during the PNP sequence it downloads the driver to the memory (e.g., hard disk) of the host computer 54.
The host computer 54 via the I/O card 32 prompts the peripheral device 52 to download the driver. Since the I/O address has already been assigned to the device 52, and the host computer 54 can talk to the device 52, it will send a unique command to the device 52 via a base address. This unique command will prompt the device 52 to download the driver code to the host computer. In the preferred embodiment, the driver is written in a processor independent language such as "C", JAVA, etc. If JAVA is employed the driver becomes platform independent and thus the device can be hooked up to any type of computer due to being platform independent. The peripheral device will go into driver download mode.
The manner for downloading will vary based on the type of interface between the host computer and the device. For example, if an ISA interface is being employed the device 52 will use an ISA data bus and download 8 to 16 bits per time of the JAVA or C driver code. Thus, the driver will be installed from the device to the host computer byte by byte over the ISA bus. If the interface is a USB, the code will be downloaded via a serial packet. A typical packet format would be used with a header, etc. The packet will go back via the bus to the host computer 54. The host computer 54 would reconstrust the packet back into the original driver code, and send a command back to the peripheral device 52 to end the downloading of the device driver. The USB interface chip plus host software would handle the receiving of the packet. FIGS. 5a and 5b illustrate exemplary packet formats for carrying out the present invention.
In step 130 instructs the printer 52 that it is programmed and that it should no longer respond as unprogrammed. Thus, the next time the host computer 542 is booted and undergoes the PNP sequence, the printer 52 will respond as configured.
Referring briefly to FIGS. 5a and 5b, an exemplary format for packets sent between devices in the system 10 is shown. Each packet includes a number of fields such as a synchronization field 150, a header field 152, a source address field 154, a destination address field 156, a data field 158, and an error correcting field (CRC) 160, for example. The synchronization field 150 includes synchronizing bits which allow a device (e.g., host computer 54) receiving the packet an opportunity to "sync" to the packet as is conventional. The header field 152 follows the synchronization field 150 and includes information such as the length and type of the packet. For example, the header field 152 may indicate whether the packet is a type which requires a response from the receiving device (e.g., host computer 54). The source address field 154 follows the header field 152 and includes an address of the device (e.g., printer 52) from which the packet originated. Following the source address field 154, the packet includes a destination address field 156 which holds the address of the device (host computer 54) to which the packet is ultimately destined. The data field 158 in the packet includes various information (see FIG. 4B) intended to be communicated to the receiving device. The packet ends with a cyclical redundancy code (CRC) field 160 which serves as an error correcting field according to the conventional techniques such that a receiving device can determine if it has properly received the packet.
FIG. 5B illustrates in greater detail the information contained in the data field 158 of packets transmitted from peripheral devices P1-P4 to the host computer 54. The data field 158, includes a transmission type field 170 which identifies the type of transmission being made by the peripheral device P1-P4 to the destination device. For example, the transmission type field 170 may indicate that the transmission being made is that of a device driver being downloaded. The data field 158 also includes a device ID field 172 which contains an identification code for the particular peripheral device P1. The identification code identifies and distinguishes the peripheral device P1 to the system 10 with respect to other peripheral devices within the computer system 10. The data field 208 further includes a driver field 176 which contains a compressed version of the device driver which is later expanded to the processor 12 upon stripping the packet for the device driver.
Referring now to FIG. 6, there is shown an overview of an ISA configuration flow for a computer system having a PNP BIOS. It should be appreciated that the ISA configuration flow disclosed herein is slightly modified for use with a non-PNP BIOS. After the computer system 10 (e.g., a PC running Microsoft WINDOWS 95 operating system) is powered on, all PNP I/O cards are initially set in an inactive mode and do not respond to any ISA bus commands. At step 200 all PNP I/O 32 cards are put in configuration mode by the computer system's software issuing an initiation key sequence. The initiation key sequence includes a series of I/O port writes to auto configuration I/O port registers on each PNP I/O card 32. All of the PNP I/O cards 32 simultaneously check the initiation key sequence. If the initiation key sequence is properly received, the PNP I/O card 32 will set itself to configuration mode in step 202.
Next, each PNP I/O card is isolated one at a time. In this regard, each PNP I/O 32 card is isolated using feedback data on the I/O bus 42, which uniquely isolates each PNP I/O card 32 by a 72-bit serial identification code. Each PNP I/O card is assigned a serial identification code that is stored in memory on the PNP I/O card 32.
At step 204, (A) a handle (i.e., Card Select Number) is assigned to the isolated PNP I/O card by the processor 12, (B) the PNP I/O card's resource data structure is read by the processor 12 and (C) the I/O card driver is downloaded to the processor 12 from the isolated PNP I/O card 32. The handle provides means for selecting a unique PNP I/O card 32 without the need to use the more elaborate and time consuming isolation protocols.
The resource data structure is read by the processor 12 by writing the address of a desired PNP register to an ADDRESS port, followed by a read of data from the READ-- DATA port. The READ-- DATA port is used to read information from the PNP registers. Each time the processor reads from the READ-- DATA port, a bus width of data (i.e. data the size of the width of I/O bus 42) is provided. Accordingly, data is read from the READ-- DATA port a plurality of times to obtain the complete resource data structure. The resource data structure describes the resources supported and those requested by the functions on the isolated PNP I/O card. When all resource capabilities and demands are known, a process of resource arbitration is invoked to determine resource allocation to each PNP I/O card 32.
Referring briefly to FIG. 7, the procedure for downloading the I/O card driver will be described in detail with reference to a flow diagram. At step 220, the file size of the I/O card driver is read from the PNP I/O card 32 by the processor 12. As in the case discussed above, the processor 12 writes the address of a desired register to the ADDRESS port, followed by a read of data from the READ-- DATA port. Next in step 222, the processor 12 writes the address of a desired register to the ADDRESS port, followed by a read of data from the READ-- DATA port, in order to obtain I/O card driver data. As discussed above, each time the processor 12 reads from the READ-- DATA port, a bus width of data (i.e. data the size of the width of I/O bus 30) is provided. Accordingly, the processor in step 226 will read I/O card driver data from the READ-- DATA port a plurality of times to obtain all of the I/O card driver data. Once all of the I/O driver data has been obtained, the process is ended. The number of read requests is based upon the I/O card driver file size. The complete I/O card driver data forms an I/O card driver file, which is stored in the system memory 18.
Returning back to FIG. 6, the configuration sequence next continues to step 230 where it is determined if another PNP I/O card needs to be isolated for configuration. If no further PNP I/O cards 32 need to be isolated, then the processor 12 in step 232 determines that the resource requirements and capabilities for all I/O cards have been determined. If in step 230 it is determined that more PNP I/O cards need to be configured, the processor 12 returns to step 202. In step 234, the handles are then used to assign conflict free resources to each PNP I/O card 32. Thereafter, in step 240, all of the PNP I/O cards 32 are activated to respectively remove them from configuration mode.
Next in step 242, the I/O card driver files stored in the system memory 18 are run. A detailed description of step 242 will now be described with reference to FIG. 8. In step 250, each I/O card driver file includes an initialization portion which is run at start-up. Where the PNP I/O card 32 supports a peripheral device (e.g., printer 52) requiring a peripheral device driver (e.g., where the PNP I/O card includes a parallel port, such as an Enhanced Parallel Port), a peripheral device driver is loaded. In contrast, where the PNP I/O card does not support a peripheral device requiring a peripheral device driver (e.g., a video card), no peripheral device driver is loaded. Thus, at step 252 the processor 12 determines whether a peripheral device driver is needed. If no peripheral device driver is needed, the initialization procedure is complete. If a peripheral device driver is needed, the processor 12 in step 258 reads the peripheral device driver file size from a memory storage device in the peripheral device. In this regard, the processor 12 executes the initialization routine to read the peripheral device driver file size from a memory storage device in the peripheral device. The processor 12 executing the initialization routine reads the peripheral device driver file size from a predetermined address (e.g., specified in the Enhanced Parallel Port specification). The peripheral device driver file size is read by the processor 12 by writing the address of a desired memory location to an ADDRESS port, followed by a read of data from a READ-- DATA port. In response to such read, a processing unit (e.g., CPU 70 of printer 52) in the peripheral device responds with data at the READ-- DATA port representing the size of the peripheral device driver file. Next, the processor 12 reads the peripheral device driver data from the memory in the peripheral device (e.g., printer 52). Accordingly, the ADDRESS and READ-- DATA ports are accessed to obtain the peripheral device driver data. Each time the processor 12 reads from the READ-- DATA port, a bus width of data (i.e. data the size of the width of I/O bus 30) is provided to the processor 12. Accordingly, the processor 12 in steps 260 and 262 will read data from the READ-- DATA port multiple times in order to obtain all of the peripheral device driver data. The number of read requests is based upon the peripheral device driver file size. Collectively, the peripheral device driver data read from the memory of the peripheral device comprises the complete peripheral device driver file. Once the peripheral device driver data has been downloaded from the peripheral device and stored to system memory 18, the initialization routine of the peripheral device driver is run at step 270. The peripheral device driver is installed in the computer system 10, thus completing step 242.
It should be appreciated that for the purposes of describing a preferred embodiment of the present invention, the peripheral device driver file is downloaded each time the computer system 10 is powered on with the peripheral device (P1-P4) attached to an I/O card 32. However, it is contemplated that the present invention may be modified such that the peripheral device driver file need only be downloaded once from the peripheral device (P1-P4), and thereafter it is retrieved directly from system memory 18 or from an external storage device (e.g., hard disk drive).
As indicated above, the present invention can be applied to other bus standards, including the Universal Serial Bus (USB). The USB is an industry standard extension to the PC architecture with a focus on Computer Telephony Integration (CTI), consumer, and productivity applications. The USB is a fast, bidirectional, isochronous, low-cost, dynamically attachable serial interface. The USB standard provides for the transfer of communication signals and power over a four wire cable (Vbus, D+, D- and GND). Moreover, the USB standard allows for the daisy chaining of peripheral devices.
A USB 300 is shown connect USB devices with a USB host. The USB physical interconnect is a tiered star topology. A hub is at the center of each star. Each wire segment is a point-to-point connection between the host and a hub or function, or a hub connected to another hub or function. A USB system has only one host. The USB interface to the host computer system is known as the "host controller." The host controller may be implemented in a combination of hardware, firmware, or software. A root hub is integrated within the host system to provide one or more attachment points. USB devices are hubs (which provide additional attachment points to the USB) and functions (which provide capabilities to the computer system; e.g., an ISDN connection, a printer, a keyboard, a mouse, a digital joystick, speakers and other peripheral devices). USB devices present a standard USB interface in terms of their comprehension of the USB protocol, response to standard USB operations such as configuration and reset, and standard capability descriptive information.
All USB devices attach to the USB via a port on a USB hub. The hub indicates attachment or removal of a USB device in its per port status. The host queries the hub to determine the reason for the notification. The hub responds by identifying the port used to attach the USB device. The host enables the port, and addresses the USB device with a control pipe using a USB Default Address. All USB devices are addressed using the USB Default Address when initially connected or after they have been reset. The host determines if the newly attached USB device is a hub or a function (e.g., peripheral device) and assigns a unique USB address to the USB device. The host establishes a control pipe for the USB device using the assigned USB address and endpoint number zero. If the attached USB device is a hub and USB devices are attached to its ports, then the above procedure is followed for each of the attached USB devices. If the attached USB device is a function, then attachment notifications will be dispatched by USB software to interested host software.
An embodiment of the present invention, as used with a USB configured computer system, will now be described with reference to FIGS. 9 and 10. FIG. 9 shows a USB-configured computer system 300. Computer system 300includes a host 302, a hub 304 and devices 308. When no device 308 is attached to the downstream port of the host 302 or hub 304, or a pull-up resistor on an attached device is not powered, pull-down resistors will cause both voltages D+and D- to be pulled below a single-ended low threshold of 0.6 V at the host or hub port. This creates a state called a "single-ended zero" on the downstream port. A disconnect condition is indicated if a "single-ended zero" persists on a downstream port for more than 2.5 μs. A connect condition is detected when a device 308 is connected to the host or hub's port, and one of the data lines is pulled above the single-ended high threshold level of 1.5 V for more than 2.3 μs.
When hub 304 detects the presence of the new device 308, it reports the presence of the new device 308 to host 302. Host 302 manages an address table and determines an address for the new device 308. The address for the new device is communicated by the host 302 to hub 304. Hub 304 and the host 302 initially communicate with the new device by use of the USB default address. As indicated above, the initial communication assigns a unique address to the new device 308, and thereafter all communications with the new device 308 take place via the unique address. In response to the initial packet, the new device 308 reports configuration data back to hub 304. In turn, hub 304 relays the configuration data to host 302. The configuration data identifies the device driver stored in a data storage means in the device. Next, host 302 requests a device driver from the new device 308. In response, the new device 308 sends a device driver to the host 302. Thereafter, the host 302 loads and runs the device driver.
As mentioned above, If the interface is a USB, the code will be downloaded via a serial packet. A typical packet format would be used with a header, etc. The packet will go back via the bus to the host computer 302. The host computer 302 will reconstrust the packet back into the original driver code, and send a command back to the peripheral device 308 to end the downloading pf the device driver. A USB interface chip plus software would handle the receiving of the packet. FIGS. 5a and 5b illustrate exemplary packet formats for carrying out the present invention.
FIG. 10 shows a flow diagram summarizing the procedure for configuring the USB computer system 300. First in step 320 the new device 308 is detected at the hub. Next in step 322, the presence of the new device 308is reported to the host 302 to obtain a unique address for the new device 308. At step 324, the host 302 assigns a unique address to the device 308. As noted above, an USB default address is used for initial communication. Next in step 326, configuration data is obtained from the new device 308, which in turn allows the device driver to be downloaded from the device in step 328.
It should be appreciated that the concept of the present invention can be extended further. In this regard, the I/O card driver data stored in the I/O card 32, or the peripheral device driver data stored in the peripheral device (P1-P4) may be suitably modified to specify a web site location (URL) on the Internet, where a most up-to-date peripheral device driver is posted. This up-to-date peripheral device driver could then be automatically downloaded to the computer system 10. Accordingly, the present invention can be utilized to install and maintain peripheral devices with the most current and compatible peripheral device driver software.
In another extension of the present invention, the peripheral device driver file may be suitably coded in JAVA or other cross-platform procedural programming language (e.g., "C"). Java is an object-oriented, distributed secure, architecture neutral language. Java provides for object-oriented design which facilitates the clean definition of interfaces and makes it possible to provide reusable "software ICs." Java has an extensive library of routines for copying easily with TCP/IP protocols like HTTP and FTP.
Java applications can open and access objects across a network via URLs with the same ease to which programmers are accustomed to accessing a local file system.
Furthermore, Java has a pointer model that eliminates the possibility of overwriting memory and corrupting data. Instead of pointer arithmetic that is employed in many conventional systems, Java has true arrays. This affords for subscript checking to be performed. In addition, it is not possible to turn an arbitrary integer into a pointer by casting.
Java affords for the support of applications on networks. Networks are composed of a variety of systems with a variety of CPU and operating system architectures. To enable a Java application to execute anywhere on the network, a compiler generates an architecture neutral object file format--the compiled code is executable on many processors, given the presence of the Java runtime system. Thus, Java is useful not only for networks but also for single system software distribution. In the present personal computer market, application writers have to produce versions of their applications that are compatible with the IBM PC and with the Apple Macintosh. However, with Java, the same version of the application runs on all platforms. The Java compiler accomplishes this by generating bytecode instructions which have nothing to do with a particular computer architecture. Rather, they are designed to be both easy to interpret on any machine and easily translated into native machine code on the fly.
Being architecture neutral, the "implementation dependent" aspects of the system are reduced or eliminated. The Java interpreter can execute Java bytecodes directly on any machine to which the interpreter has been ported. Since linking is a more incremental and lightweight process, the development process can be much more rapid and exploratory. As part of the bytecode stream, more compile-time information is carried over and available at runtime.
The present invention through the use of Java affords for multiplatforming. That is the same peripheral device driver can be run on substantially all computers - the same applet (a program designed to be delivered through a browser) can work on a Macintosh, a Windows 95 machine, a Sun workstation, etc. To effect such multiplatforming, a network connection and a network browser (not shown) such as Netscape Navigator or Microsoft Internet Explorer may be used in at least one embodiment of the present invention. Although the present invention is described with respect to employing Java, it will be appreciated that any suitable programming language may be employed to carry out the present invention.
Thus, the present invention allows the peripheral device driver file to be both processor and operating system independent. As a result, a single peripheral device driver would be suitable for use in connection with a Pentium PC running OS/2, a Pentium PC running WINDOWS95, a Power PC running MAC OS, or any other processor or operating system (e.g., UNIX). Moreover, the peripheral device driver could be coded in object code, thus providing an operating system independent code. Accordingly, the present invention can be utilized to provide easy-to-install peripheral devices, which are compatible with a wide variety of computer systems.
It will be appreciated from the discussion herein that the present invention provides integrating a device driver with the device itself. As a result, the present invention overcomes the problems associated with conventional techniques for installing device drivers. The present invention further provides for a method for retrieving the device driver software from the peripheral device upon powering of a computer system the device has been newly added to. As a result of the driver being located within the device itself, the need to supply a separate disk or CD-ROM with each peripheral device is eliminated. This feature of the present invention removes the need to maintain disks or CD-ROMS containing device driver software.
What has been described above are preferred embodiments of the present invention. It is, of course, not possible to describe every conceivable combination of components or methodologies for purposes of describing the present invention, but one of ordinary skill in the art will recognize that many further combinations and permutations of the present invention are possible. Accordingly, the present invention is intended to embrace all such alterations, modifications and variations that fall within the spirit and scope of the appended claims.

Claims (29)

What is claimed is:
1. A peripheral device operative to be coupled to a computing system, comprising:
a processor for processing various functions relating to the operation of the peripheral device; and
a memory operatively coupled to the processor, the memory storing a device driver for the peripheral device;
the peripheral device configured to be coupled to an I/O device;
wherein the peripheral device downloads the device driver to the computing system after the computing system determines the device driver is needed, the computing system making such determination based on whether the I/O device supports the peripheral device.
2. The peripheral device of claim 1, wherein the peripheral device is adapted to download the device driver to a computer of the computing system.
3. The peripheral device of claim 2, wherein the peripheral device downloads the device driver to the computer upon receipt of a driver download command from the computer.
4. The peripheral device of claim 1, wherein the device driver is downloaded in a packet format.
5. The peripheral device of claim 3, wherein the peripheral device further informs the computer of the file size of the device driver.
6. The peripheral device of claim 1, wherein the peripheral device is a printer.
7. The peripheral device of claim 1, wherein the peripheral device is a mouse.
8. A system for installing a peripheral device to a computer system, comprising:
a peripheral device operatively coupled to the computer system via an I/O card, the peripheral device including a first processor and a first memory, the first memory storing a device driver for the peripheral device;
a second processor for processing functions relating to the computer system, the second processor being operative to be coupled to the peripheral device; and
a second memory operatively coupled to the second processor;
wherein the second processor analyzes the I/O card and reads he device driver from the first memory if the I/O card includes a parallel port.
9. The system of claim 8, the I/O card including a third memory for storing I/O card driver data.
10. The system of claim 9, wherein the processor institutes transfer of the I/O card driver data to the second memory, and the device driver to the second memory in accordance with the I/O card driver data.
11. The system of claim 10, wherein the I/O card driver data includes an I/O card driver file, the processor executing the I/O card driver file to identify and locate the device driver stored in the first memory.
12. The system of claim 10, wherein the processor learns the file size of the device driver.
13. The system of claim 10, wherein the device driver is in the form of at least one of: executable program code, source code, and platform independent language code.
14. The system of claim 13, wherein the platform independent language code is JAVA.
15. The system of claim 13, wherein the platform independent language code is C.
16. The system of claim 10, wherein the transfer is accomplished during a computer boot-up procedure.
17. The system of claim 10, wherein the computer boot-up procedure includes a Plug and Play ISA power-up sequence.
18. The system of claim 8, further including a universal serial bus.
19. The system of claim 8, wherein the device driver is downloaded in a packet format.
20. The system of claim 8, wherein the device is a printer.
21. The system of claim 8, wherein the device is a mouse.
22. A method for installing a peripheral device driver to a computer system, including the steps of:
connecting a peripheral device to the computer system, the peripheral device including:
a first processor for processing various functions relating to the operation of the peripheral device; and
a first memory operatively coupled to the processor, the first memory storing the peripheral device driver for the peripheral device;
analyzing an I/O card operatively to determine if the I/O card supports the peripheral device;
transferring the peripheral device driver form the first memory to the computer system, the computer system including:
a second processor for processing functions relating to the computer system, the second processor being operatively coupled to the peripheral device; and
a second memory operatively coupled to the second processor.
23. The method of claim 22, further including the step of:
transferring the device driver from the first memory to the second memory.
24. The method of claim 22, wherein the I/O card includes a third memory for storing I/O card driver data, the method further including the step of:
executing the I/O card driver data to identify the peripheral device.
25. The method of claim 24, further including the step of:
reading the file size of the peripheral device driver prior to transferring the device driver from the first memory to the second memory.
26. The method of claim 22, further including the step of using a Plug and Play ISA sequence.
27. The method of claim 22, further including the step of using a universal serial bus.
28. The method of claim 27, further including the step of transferring the device driver from the first memory to the second memory via a packet format.
29. A method of claim 22, further including the step of:
using the peripheral device to identify to the computer system a web site corresponding to the web site address, the web site having a peripheral device driver for the peripheral device, the peripheral device driver being downloadable to the computer system from the web site.
US08/927,349 1997-09-12 1997-09-12 Integrated device driver wherein the peripheral downloads the device driver via an I/O device after it is determined that the I/O device has the resources to support the peripheral device Expired - Lifetime US6009480A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US08/927,349 US6009480A (en) 1997-09-12 1997-09-12 Integrated device driver wherein the peripheral downloads the device driver via an I/O device after it is determined that the I/O device has the resources to support the peripheral device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US08/927,349 US6009480A (en) 1997-09-12 1997-09-12 Integrated device driver wherein the peripheral downloads the device driver via an I/O device after it is determined that the I/O device has the resources to support the peripheral device

Publications (1)

Publication Number Publication Date
US6009480A true US6009480A (en) 1999-12-28

Family

ID=25454621

Family Applications (1)

Application Number Title Priority Date Filing Date
US08/927,349 Expired - Lifetime US6009480A (en) 1997-09-12 1997-09-12 Integrated device driver wherein the peripheral downloads the device driver via an I/O device after it is determined that the I/O device has the resources to support the peripheral device

Country Status (1)

Country Link
US (1) US6009480A (en)

Cited By (153)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6131134A (en) * 1998-05-12 2000-10-10 Primax Electronics Ltd. Hot plug-and-play converter of a universal serial bus interface
US6145021A (en) * 1998-06-02 2000-11-07 International Business Machines Corporation Method and system for managing resource allocation for plug and play devices by providing only the resources required to the devices before system initialization
EP1056001A2 (en) * 1999-05-26 2000-11-29 Xerox Corporation System and method for dynamically loading platform independent drivers
US6167407A (en) * 1998-06-03 2000-12-26 Symantec Corporation Backtracked incremental updating
WO2001007984A2 (en) * 1999-07-27 2001-02-01 Cais, Inc. Universal serial bus adapter with automatic installation
US6210051B1 (en) * 1996-01-29 2001-04-03 Canon Kabushiki Kaisha Printer and control method therefor
US6216188B1 (en) 1998-01-12 2001-04-10 Alps Electric Co., Ltd. Computer system having computer provided with universal-serial-bus and device conforming to universal-serial-bus standard
US6279060B1 (en) * 1998-12-04 2001-08-21 In-System Design, Inc. Universal serial bus peripheral bridge simulates a device disconnect condition to a host when the device is in a not-ready condition to avoid wasting bus resources
US20010027517A1 (en) * 2000-02-04 2001-10-04 Takeshi Kato System comprising host device and peripheral device
US20010044857A1 (en) * 2000-05-17 2001-11-22 Pham Tuan Huu Component installation tool
US20010047440A1 (en) * 2000-04-04 2001-11-29 Yoshiyuki Takaku Information processing device, control device, information processing system, and methods thereof
US6336151B1 (en) * 1998-01-09 2002-01-01 Fuji Xerox Co., Ltd System for controlling an external device connected through a peripheral device by providing a program formed by combination of the peripheral device and the external device to a host system
US20020016908A1 (en) * 2000-07-31 2002-02-07 Makoto Tanaka Electronic equipment communication system, external device for the communication system, electronic equipment and electronic equipment communication method
US6353866B1 (en) * 1998-01-07 2002-03-05 National Semiconductor Corporation Apparatus and method for initializing a universal serial bus device
US6360364B1 (en) * 1999-03-17 2002-03-19 Microsoft Corporation System and method for installing an application on a portable computer
US20020052982A1 (en) * 2000-08-09 2002-05-02 Yoshiyasu Kubota Electronic device, apparatus using the same, and method of reading out data
US20020065950A1 (en) * 2000-09-26 2002-05-30 Katz James S. Device event handler
US20020065872A1 (en) * 2000-09-13 2002-05-30 Genske Timothy W. System and method for dynamic uploading and execution of applications and drivers between devices
US20020083315A1 (en) * 2000-12-22 2002-06-27 Patel Chinmay S. System for storing optional modules in non-volatile memory for expansion ROM
US20020083228A1 (en) * 2000-12-21 2002-06-27 Chiloyan John H. Method and system to access software pertinent to an electronic peripheral device at an address based on a peripheral device identifier
US20020092014A1 (en) * 2000-12-08 2002-07-11 Yasuo Shibusawa Software installing method and system
US6421755B1 (en) * 1999-05-26 2002-07-16 Dell Usa, L.P. System resource assignment for a hot inserted device
EP1223722A2 (en) * 2001-01-12 2002-07-17 Microsoft Corporation Method and system to access software pertinent to a peripheral device
US6424722B1 (en) 1997-01-13 2002-07-23 Micro Ear Technology, Inc. Portable system for programming hearing aids
US20020103861A1 (en) * 2001-01-31 2002-08-01 Janz Susan M. Manipulating fleet devices in an index
US20020103995A1 (en) * 2001-01-31 2002-08-01 Owen Jonathan M. System and method of initializing the fabric of a distributed multi-processor computing system
US6449662B1 (en) * 1997-01-13 2002-09-10 Micro Ear Technology, Inc. System for programming hearing aids
US20020188938A1 (en) * 2001-06-11 2002-12-12 Dong Mimi Chu System and method for providing application software for a peripheral device
US20020194583A1 (en) * 2001-04-27 2002-12-19 Masayuki Kitagawa System and method for automatically transferring data to a host
US20030037197A1 (en) * 2001-08-20 2003-02-20 Kim Do Hyung Universal serial bus device initialized with a real descriptor stored in host and method for initializing the same
US20030046447A1 (en) * 2001-07-31 2003-03-06 Konstantin Kouperchliak Device-related software installation
US6535933B1 (en) * 1998-07-07 2003-03-18 Minolta Co., Ltd. Information processing system device control method, information processing system device and software storage medium
US6539476B1 (en) * 1999-08-12 2003-03-25 Handspring, Inc. Mobile computer system capable for copying set-up application including removal routine from peripheral device for removing device programs after the device is removed
US20030066066A1 (en) * 2001-10-03 2003-04-03 Toshiba Tec Kabushiki Kaisha Download and installation of software from a network printer
US6574588B1 (en) * 1998-09-23 2003-06-03 Microsoft Corporation Solid-state memory device that emulates a known storage device
US6574678B1 (en) * 1998-02-27 2003-06-03 Nokia Mobile Phones Ltd. Method for installing services
US20030119975A1 (en) * 2001-10-05 2003-06-26 Hironao Fujiki Silicone rubber compositions for rubber construction materials
US6594690B2 (en) * 1999-02-24 2003-07-15 Hewlett-Packard Development Company, L.P. Network peripheral device driver installer
US20030149823A1 (en) * 2002-01-23 2003-08-07 Xerox Corporation System and method for providing context information
US20030163611A1 (en) * 2002-02-26 2003-08-28 Fujitsu Component Limited Electronic device and method of controlling the same
US6618750B1 (en) * 1999-11-02 2003-09-09 Apple Computer, Inc. Method and apparatus for determining communication paths
DE10208530A1 (en) * 2002-02-27 2003-09-18 Moeller Gmbh Method for configuration and operation of peripheral devices connected to a host unit via a field bus in which the peripherals are supplied with a configuration file so that they can be directly configured by the host over the bus
US20030196007A1 (en) * 2002-04-12 2003-10-16 Baron John M. Device-resident driver system and method
US20030200353A1 (en) * 2002-04-19 2003-10-23 Vikas Dogra Browser-implemented upload/download of a driver
WO2003102752A1 (en) * 2002-05-31 2003-12-11 Simpletech, Inc. Removable storage device
US6668376B1 (en) * 2000-01-07 2003-12-23 Ricoh Company, Ltd. System and method for automatically loading a device driver
US20040003157A1 (en) * 2002-06-27 2004-01-01 Lee Chun Liang Hot plug protection device for hard disk drives
US6687814B1 (en) * 1999-07-12 2004-02-03 Micron Technology, Inc. Controller with interface attachment
US6694354B1 (en) * 1998-11-30 2004-02-17 Telefonaktiebolaget Lm Ericsson (Publ) Host computer access to peripheral device drivers
US6701192B1 (en) 2000-09-13 2004-03-02 Ncr Corporation Wiring hub for a retail terminal
US6704824B1 (en) 1999-07-27 2004-03-09 Inline Connection Corporation Universal serial bus adapter with automatic installation
US20040107275A1 (en) * 2002-12-03 2004-06-03 Hardcastle Michael J. System and method for the hybrid harvesting of information from peripheral devices
US6754698B1 (en) * 1998-09-11 2004-06-22 L. V. Partners, L.P. Method and apparatus for accessing a remote location with an optical reader having a dedicated memory system
US20040122989A1 (en) * 2002-12-20 2004-06-24 Lyman Hall Method of determining code to download for runtime configuration
US20040122992A1 (en) * 2002-12-24 2004-06-24 Scott Janus Detection of support components for add-in card
EP1434128A1 (en) * 2002-12-27 2004-06-30 Neodio Technologies Corporation Plug-and-play interconnection architecture and method with in-device storage module in peripheral device
US20040133722A1 (en) * 2001-04-30 2004-07-08 Croyle Richard Lancaster Communication interface for an electronic device
US6772328B1 (en) * 1999-06-18 2004-08-03 Samsung Electronics Co., Ltd. Dynamic initialization of processor module via motherboard interface
US20040162975A1 (en) * 2003-02-19 2004-08-19 Yakovlev Sergiy B. Methods and computer systems for updating values of a DSDT
US6785720B1 (en) * 1998-05-23 2004-08-31 Samsung Electronics Co., Ltd. Method for connecting to server devices in browser-based home network apparatus therefor
US20040205778A1 (en) * 2003-04-08 2004-10-14 Wong Yin Hui System and method for installing portable device drivers
US20040205780A1 (en) * 2000-03-16 2004-10-14 Canon Kabushiki Kaisha Distributed processing system and its control method
US6810481B1 (en) * 1999-09-01 2004-10-26 Canon Kabushiki Kaisha Electronic device, control method therefor, and storage medium providing power supply control function
US6813670B1 (en) * 2000-09-26 2004-11-02 Microsoft Corporation Automatic server-side plug-and-play without user intervention
US6813669B1 (en) * 2000-02-24 2004-11-02 International Business Machines Corporation Agent provided by USB device for executing USB device dependent program in USB host
US20040255338A1 (en) * 2003-06-13 2004-12-16 Apple Computer, Inc. Interface for sending synchronized audio and video data
US20040255339A1 (en) * 2003-06-13 2004-12-16 Apple Computer, Inc Synchronized transmission of audio and video data from a computer to a client via an interface
US20040252231A1 (en) * 2003-06-13 2004-12-16 Apple Computer, Inc. Synthesis of vertical blanking signal
US20040260853A1 (en) * 2003-04-11 2004-12-23 Samsung Electronics Co., Ltd. Computer system and method of setting an interface card therein
WO2005010751A2 (en) * 2003-07-30 2005-02-03 Matsushita Electric Industrial Co,. Ltd. Method and system for installing a device driver on a host by uploading the driver from the device
DE10336877B3 (en) * 2003-08-11 2005-02-17 Infineon Technologies Ag USB-based peripheral device and procedure for commissioning the USB-based peripheral device
US20050069361A1 (en) * 2003-09-30 2005-03-31 Jianxin Wang System and method to communicate to controller mapped by print server
US20050071523A1 (en) * 2003-09-25 2005-03-31 International Business Machines Corporation Method and system for automatically determining I/O connector configuration
US20050097573A1 (en) * 1998-09-23 2005-05-05 Microsoft Corporation Device driver auto-load
US20050102682A1 (en) * 2003-11-12 2005-05-12 Intel Corporation Method, system, and program for interfacing with a network adaptor supporting a plurality of devices
US20050114582A1 (en) * 1999-11-16 2005-05-26 Apple Computer, Inc. Method and apparatus for accelerating detection of serial bus device speed signals
US20050117528A1 (en) * 1999-11-05 2005-06-02 Apple Computer, Inc. Method and apparatus for preventing loops in a full-duplex bus
US20050132352A1 (en) * 2003-12-11 2005-06-16 Konica Minolta Business Technologies, Inc. Installation of hardware devices
US20050132333A1 (en) * 2003-12-12 2005-06-16 Oracle International Corporation Methods and systems for testing software applications
US6915337B1 (en) * 2000-03-07 2005-07-05 Ricoh Co. Ltd. Method and system for updating the device driver of a business office appliance
US20050162675A1 (en) * 2004-01-23 2005-07-28 Sharp Laboratories Of America, Inc. Method and apparatus for embedded driver download using raw imaging protocol
US20050216717A1 (en) * 2003-04-08 2005-09-29 Synology, Inc. Clientless external storage device
US20050228979A1 (en) * 2004-04-08 2005-10-13 Fujitsu Limited Stored-program device
KR100544179B1 (en) * 2001-11-15 2006-01-23 삼성전자주식회사 Method and apparatus for integrated management of drivers for the computer peripherals
US6990208B1 (en) * 2000-03-08 2006-01-24 Jbl, Incorporated Vehicle sound system
US7003613B1 (en) * 1999-01-26 2006-02-21 Transdimension Inc. System for transferring data using a USB host system with a dedicated processor
US20060071820A1 (en) * 2002-10-21 2006-04-06 Lichen Wang Universal mobile keyboard
US7050453B1 (en) 2000-02-17 2006-05-23 Apple Computer, Inc. Method and apparatus for ensuring compatibility on a high performance serial bus
US7058872B1 (en) 2000-04-21 2006-06-06 Apple Computer, Inc. Method and apparatus for generating jitter test patterns on a high performance serial bus
US20060119881A1 (en) * 2004-12-04 2006-06-08 Zarco Maria F Methods and apparatus for managing configuration of an imaging device peripheral
US20060143621A1 (en) * 2004-12-29 2006-06-29 Wang Dan T S Self-installing PCMCIA network card
US20060195832A1 (en) * 2005-02-25 2006-08-31 Microsoft Corporation Modules for composing computer systems
WO2006092552A1 (en) * 2005-03-04 2006-09-08 Cambridge Silicon Radio Limited Installing drivers
US7117280B2 (en) * 2000-12-27 2006-10-03 Intel Corporation Network based intra-system communications architecture
US20060259596A1 (en) * 1999-10-18 2006-11-16 Birse Cameron S Method and apparatus for administering the operating system of a net-booted environment
US20060265869A1 (en) * 2002-05-01 2006-11-30 Prolific Technology Inc. Method of installing a plug and play device driver and software
DE102005025875A1 (en) * 2005-06-06 2006-12-07 Audi Ag Motor vehicle, has control device with processors comprising respective operating systems, each with file system, in which program units are represented on data files, and application programming interface comprising device driver
US7191266B1 (en) 1999-11-02 2007-03-13 Apple Computer, Inc. Method and apparatus for supporting and presenting multiple serial bus nodes using distinct configuration ROM images
US20070101118A1 (en) * 2005-11-01 2007-05-03 Internatoinal Business Machines Corporation Method and system for local provisioning of device drivers for portable storage devices
US20070101343A1 (en) * 2005-10-31 2007-05-03 Microsoft Corporation Rebootless display driver upgrades
US7237101B1 (en) * 2000-02-12 2007-06-26 International Business Machines Corporation Methods and apparatus for self describing devices
US7237135B1 (en) 2003-12-29 2007-06-26 Apple Inc. Cyclemaster synchronization in a distributed bridge
US7240098B1 (en) * 2002-05-09 2007-07-03 Cisco Technology, Inc. System, method, and software for a virtual host bus adapter in a storage-area network
US20070177426A1 (en) * 2006-01-31 2007-08-02 Richard Dellacona System and method for automated delivery of software payload
WO2007089769A2 (en) * 2006-01-31 2007-08-09 Home Free Enterprises, Lp System and method for automated delivery of software
US7266617B1 (en) 2000-01-18 2007-09-04 Apple Inc. Method and apparatus for border node behavior on a full-duplex bus
US7280491B1 (en) 2000-01-18 2007-10-09 Apple Inc. Method and apparatus for border node behavior on a full-duplex bus
US20070255939A1 (en) * 2006-04-28 2007-11-01 Nokia Corporation Methods, device, mobile terminal and computer program product for decoupling hardware settings from software
DE102006023019A1 (en) * 2006-05-17 2007-11-22 Deutsches Zentrum für Luft- und Raumfahrt e.V. Information technology-component e.g. printer, for use with personal computer, has memory medium connected with universal serial bus interface, where data required for operation of component are stored in memory medium
US7308517B1 (en) 2003-12-29 2007-12-11 Apple Inc. Gap count analysis for a high speed serialized bus
EP1662385A3 (en) * 2004-06-10 2008-03-19 Microsoft Corporation Self-installing computer peripherals
US7353259B1 (en) 2002-03-07 2008-04-01 Cisco Technology, Inc. Method and apparatus for exchanging configuration information between nodes operating in a master-slave configuration
US7389332B1 (en) 2001-09-07 2008-06-17 Cisco Technology, Inc. Method and apparatus for supporting communications between nodes operating in a master-slave configuration
US7401173B1 (en) 2000-04-21 2008-07-15 Apple Inc. Method and apparatus for automatic detection and healing of signal pair crossover on a high performance serial bus
US20080195769A1 (en) * 2007-01-26 2008-08-14 Juraid Anwer Method of identifying devices in mobile and desktop environments
US20080214172A1 (en) * 2007-01-26 2008-09-04 Juraid Anwer Method of loading software in mobile and desktop environments
US7426551B1 (en) 2000-05-31 2008-09-16 Mcafee, Inc. System, method and computer program product for dynamic system adaptation using contracts
US20080244567A1 (en) * 2007-03-30 2008-10-02 Konica Minolta Systems Laboratory, Inc. Portable printer driver
US7433300B1 (en) 2003-03-28 2008-10-07 Cisco Technology, Inc. Synchronization of configuration data in storage-area networks
US7451208B1 (en) 2003-06-28 2008-11-11 Cisco Technology, Inc. Systems and methods for network address failover
US20080301497A1 (en) * 2007-06-04 2008-12-04 Silicon Motion, Inc. Testing Apparatus, System, and Method for Testing at Least One Device with a Connection Interface
US7475238B1 (en) 2003-02-19 2009-01-06 American Megatrends, Inc. Methods and computer systems for selection of a DSDT
US20090055569A1 (en) * 2007-08-24 2009-02-26 Cypress Semiconductor Corporation, A Corporation Of The State Of Delaware Bridge device with page-access based processor interface
US7587465B1 (en) 2002-04-22 2009-09-08 Cisco Technology, Inc. Method and apparatus for configuring nodes as masters or slaves
EP1299794B1 (en) * 2000-07-13 2010-02-10 International Business Machines Corporation System and method for establishing wireless connection
US7724281B2 (en) 2002-02-04 2010-05-25 Syniverse Icx Corporation Device facilitating efficient transfer of digital content from media capture device
US7730210B2 (en) 2002-04-22 2010-06-01 Cisco Technology, Inc. Virtual MAC address system and method
US7734758B1 (en) * 2000-07-19 2010-06-08 Cisco Technology, Inc. USB encapsulation for network transmission
US7774774B1 (en) * 2003-10-22 2010-08-10 Apple Inc. Software setup system
US7787647B2 (en) 1997-01-13 2010-08-31 Micro Ear Technology, Inc. Portable system for programming hearing aids
US20100281194A1 (en) * 2008-09-02 2010-11-04 Robb Fujioka Modular application computing apparatus, system and method
US20100313171A1 (en) * 2009-06-05 2010-12-09 Funai Electric Co., Ltd. Information Display System and Information Display Apparatus
US7904599B1 (en) 2003-03-28 2011-03-08 Cisco Technology, Inc. Synchronization and auditing of zone configuration data in storage-area networks
JP2011096285A (en) * 2011-02-02 2011-05-12 Fujitsu Ltd Device and device recognition method
US20110108047A1 (en) * 2009-10-06 2011-05-12 Goff Christopher L Finger positioning device for a printer
USRE42397E1 (en) * 1999-04-05 2011-05-24 Sandisk Il Ltd. Architecture for a universal serial bus-based PC flash disk
US8090894B1 (en) 2007-09-21 2012-01-03 Cypress Semiconductor Corporation Architectures for supporting communication and access between multiple host devices and one or more common functions
US20120159521A1 (en) * 2010-12-20 2012-06-21 Kriegelstein J K Method and apparatus for integrating driver(s) of a portable device into the portable device
US8212893B2 (en) 1999-06-08 2012-07-03 Verisign, Inc. Digital camera device and methodology for distributed processing and wireless transmission of digital images
US8275910B1 (en) 2003-07-02 2012-09-25 Apple Inc. Source packet bridge
US8300862B2 (en) 2006-09-18 2012-10-30 Starkey Kaboratories, Inc Wireless interface for programming hearing assistance devices
US8315269B1 (en) 2007-04-18 2012-11-20 Cypress Semiconductor Corporation Device, method, and protocol for data transfer between host device and device having storage interface
US20130139184A1 (en) * 2011-11-30 2013-05-30 Lsi Corporation Method for embedding a host driver within a device
US8463951B1 (en) * 2003-03-27 2013-06-11 Nvidia Corporation Unified driver architecture device identifier strategy
US8503703B2 (en) 2000-01-20 2013-08-06 Starkey Laboratories, Inc. Hearing aid systems
WO2014085162A1 (en) * 2012-11-30 2014-06-05 Intel Corporation Coexisting standard and proprietary connection usage
US20140187891A1 (en) * 1998-09-08 2014-07-03 Roche Diagnostics International Ag Module for a computer interface
US8838731B2 (en) 2002-10-01 2014-09-16 Apple Inc. Method and apparatus for dynamically locating resources
WO2016112008A1 (en) * 2015-01-06 2016-07-14 Avocent Huntsville Corp. System and method for presenting driver install files when enabling a usb device
US9542172B2 (en) 2013-02-05 2017-01-10 Apple Inc. Automatic updating of applications
US9824059B2 (en) 2014-08-30 2017-11-21 Microsoft Technology Licensing, Llc Child serial device discovery protocol
US10460085B2 (en) 2008-03-13 2019-10-29 Mattel, Inc. Tablet computer
US11113113B2 (en) 2017-09-08 2021-09-07 Apple Inc. Systems and methods for scheduling virtual memory compressors

Citations (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5228118A (en) * 1991-06-29 1993-07-13 Brother Kogyo Kabushiki Kaisha Printing system wherein one of printer drivers through which print data is sent from a data processor to a printer is selected based on interpreters available on the printer
US5339432A (en) * 1992-10-13 1994-08-16 Microsoft Corporation Method and system for providing user control of device driver configuration
US5386567A (en) * 1992-01-20 1995-01-31 International Business Machines Corp. Hot removable and insertion of attachments on fully initialized computer systems
US5390301A (en) * 1992-08-11 1995-02-14 Acer Incorporated Method and apparatus for communicating device-specific information between a device driver and an operating system in a computer system
US5412798A (en) * 1991-12-27 1995-05-02 Intel Corporation System for enabling access to device driver residing in resource memory corresponding to coupled resource by allowing memory mapping to device driver to be executed
JPH07281986A (en) * 1994-04-14 1995-10-27 Canon Electron Inc Extended board, information processor using the same and control method for peripheral device
JPH08101803A (en) * 1994-09-30 1996-04-16 Ricoh Co Ltd Information processing system
US5517646A (en) * 1994-04-25 1996-05-14 Compaq Computer Corp. Expansion device configuration system having two configuration modes which uses automatic expansion configuration sequence during first mode and configures the device individually during second mode
US5580177A (en) * 1994-03-29 1996-12-03 Hewlett-Packard Company Printer/client network with centrally updated printer drivers and printer status monitoring
US5586268A (en) * 1995-03-03 1996-12-17 Advanced System Products, Inc. Multiple peripheral adapter device driver architecture
JPH096702A (en) * 1995-06-14 1997-01-10 Canon Inc Peripheral device, automatic device driver software preparation system, automatic preparing method for device driver software and inquiry responding method for peripheral device
US5598563A (en) * 1992-11-16 1997-01-28 Microsoft Corporation Method of loading device drivers from ROM without requirement of system to have any harddisks or floppy drives and without using config.sys file
US5613123A (en) * 1992-09-30 1997-03-18 Microsoft Corporation Method and system for configuring and executing device drivers based on configuration requirements
US5634075A (en) * 1995-01-11 1997-05-27 Cirrus Logic, Inc. Backward compatibility for plug and play systems
US5713041A (en) * 1994-06-15 1998-01-27 Intel Corporation Computer system having a host CPU and a logic for integrating peripheral control functions into the host CPU
US5780610A (en) * 1994-08-30 1998-07-14 Collins; Mark L. Reduction of nonspecific hybridization by using novel base-pairing schemes
US5812796A (en) * 1995-08-18 1998-09-22 General Magic, Inc. Support structures for an intelligent low power serial bus
US5852743A (en) * 1996-07-12 1998-12-22 Twinhead International Corp. Method and apparatus for connecting a plug-and-play peripheral device to a computer

Patent Citations (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5228118A (en) * 1991-06-29 1993-07-13 Brother Kogyo Kabushiki Kaisha Printing system wherein one of printer drivers through which print data is sent from a data processor to a printer is selected based on interpreters available on the printer
US5412798A (en) * 1991-12-27 1995-05-02 Intel Corporation System for enabling access to device driver residing in resource memory corresponding to coupled resource by allowing memory mapping to device driver to be executed
US5386567A (en) * 1992-01-20 1995-01-31 International Business Machines Corp. Hot removable and insertion of attachments on fully initialized computer systems
US5390301A (en) * 1992-08-11 1995-02-14 Acer Incorporated Method and apparatus for communicating device-specific information between a device driver and an operating system in a computer system
US5613123A (en) * 1992-09-30 1997-03-18 Microsoft Corporation Method and system for configuring and executing device drivers based on configuration requirements
US5339432A (en) * 1992-10-13 1994-08-16 Microsoft Corporation Method and system for providing user control of device driver configuration
US5598563A (en) * 1992-11-16 1997-01-28 Microsoft Corporation Method of loading device drivers from ROM without requirement of system to have any harddisks or floppy drives and without using config.sys file
US5580177A (en) * 1994-03-29 1996-12-03 Hewlett-Packard Company Printer/client network with centrally updated printer drivers and printer status monitoring
JPH07281986A (en) * 1994-04-14 1995-10-27 Canon Electron Inc Extended board, information processor using the same and control method for peripheral device
US5517646A (en) * 1994-04-25 1996-05-14 Compaq Computer Corp. Expansion device configuration system having two configuration modes which uses automatic expansion configuration sequence during first mode and configures the device individually during second mode
US5713041A (en) * 1994-06-15 1998-01-27 Intel Corporation Computer system having a host CPU and a logic for integrating peripheral control functions into the host CPU
US5780610A (en) * 1994-08-30 1998-07-14 Collins; Mark L. Reduction of nonspecific hybridization by using novel base-pairing schemes
JPH08101803A (en) * 1994-09-30 1996-04-16 Ricoh Co Ltd Information processing system
US5634075A (en) * 1995-01-11 1997-05-27 Cirrus Logic, Inc. Backward compatibility for plug and play systems
US5586268A (en) * 1995-03-03 1996-12-17 Advanced System Products, Inc. Multiple peripheral adapter device driver architecture
JPH096702A (en) * 1995-06-14 1997-01-10 Canon Inc Peripheral device, automatic device driver software preparation system, automatic preparing method for device driver software and inquiry responding method for peripheral device
US5812796A (en) * 1995-08-18 1998-09-22 General Magic, Inc. Support structures for an intelligent low power serial bus
US5852743A (en) * 1996-07-12 1998-12-22 Twinhead International Corp. Method and apparatus for connecting a plug-and-play peripheral device to a computer

Cited By (283)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6210051B1 (en) * 1996-01-29 2001-04-03 Canon Kabushiki Kaisha Printer and control method therefor
US7774795B2 (en) 1996-01-29 2010-08-10 Canon Kabushiki Kaisha Printer with optional device control
US20060227361A1 (en) * 1996-01-29 2006-10-12 Canon Kabushiki Kaisha Printer and control method therefor
US7054957B2 (en) * 1997-01-13 2006-05-30 Micro Ear Technology, Inc. System for programming hearing aids
US6424722B1 (en) 1997-01-13 2002-07-23 Micro Ear Technology, Inc. Portable system for programming hearing aids
US7787647B2 (en) 1997-01-13 2010-08-31 Micro Ear Technology, Inc. Portable system for programming hearing aids
US7929723B2 (en) 1997-01-13 2011-04-19 Micro Ear Technology, Inc. Portable system for programming hearing aids
US6449662B1 (en) * 1997-01-13 2002-09-10 Micro Ear Technology, Inc. System for programming hearing aids
US20020168075A1 (en) * 1997-01-13 2002-11-14 Micro Ear Technology, Inc. Portable system programming hearing aids
US6415343B1 (en) 1998-01-07 2002-07-02 National Semicondoctor Corporation Apparatus and method for initializing a universal serial bus device
US6353866B1 (en) * 1998-01-07 2002-03-05 National Semiconductor Corporation Apparatus and method for initializing a universal serial bus device
US6336151B1 (en) * 1998-01-09 2002-01-01 Fuji Xerox Co., Ltd System for controlling an external device connected through a peripheral device by providing a program formed by combination of the peripheral device and the external device to a host system
US6216188B1 (en) 1998-01-12 2001-04-10 Alps Electric Co., Ltd. Computer system having computer provided with universal-serial-bus and device conforming to universal-serial-bus standard
US6574678B1 (en) * 1998-02-27 2003-06-03 Nokia Mobile Phones Ltd. Method for installing services
US6131134A (en) * 1998-05-12 2000-10-10 Primax Electronics Ltd. Hot plug-and-play converter of a universal serial bus interface
US6785720B1 (en) * 1998-05-23 2004-08-31 Samsung Electronics Co., Ltd. Method for connecting to server devices in browser-based home network apparatus therefor
US6145021A (en) * 1998-06-02 2000-11-07 International Business Machines Corporation Method and system for managing resource allocation for plug and play devices by providing only the resources required to the devices before system initialization
US6167407A (en) * 1998-06-03 2000-12-26 Symantec Corporation Backtracked incremental updating
US6535933B1 (en) * 1998-07-07 2003-03-18 Minolta Co., Ltd. Information processing system device control method, information processing system device and software storage medium
US20140187891A1 (en) * 1998-09-08 2014-07-03 Roche Diagnostics International Ag Module for a computer interface
US6754698B1 (en) * 1998-09-11 2004-06-22 L. V. Partners, L.P. Method and apparatus for accessing a remote location with an optical reader having a dedicated memory system
US6574588B1 (en) * 1998-09-23 2003-06-03 Microsoft Corporation Solid-state memory device that emulates a known storage device
US7233890B2 (en) 1998-09-23 2007-06-19 Microsoft Corporation Solid-state memory device that emulates a known storage device
US20030195737A1 (en) * 1998-09-23 2003-10-16 Microsoft Corporation Solid-state memory device that emulates a known storage device
US7299169B2 (en) 1998-09-23 2007-11-20 Microsoft Corporation Device driver auto-load
US20050097573A1 (en) * 1998-09-23 2005-05-05 Microsoft Corporation Device driver auto-load
US7058563B1 (en) 1998-09-23 2006-06-06 Microsoft Corporation Device driver auto-load
US6694354B1 (en) * 1998-11-30 2004-02-17 Telefonaktiebolaget Lm Ericsson (Publ) Host computer access to peripheral device drivers
US6279060B1 (en) * 1998-12-04 2001-08-21 In-System Design, Inc. Universal serial bus peripheral bridge simulates a device disconnect condition to a host when the device is in a not-ready condition to avoid wasting bus resources
US7003613B1 (en) * 1999-01-26 2006-02-21 Transdimension Inc. System for transferring data using a USB host system with a dedicated processor
US6594690B2 (en) * 1999-02-24 2003-07-15 Hewlett-Packard Development Company, L.P. Network peripheral device driver installer
US6360364B1 (en) * 1999-03-17 2002-03-19 Microsoft Corporation System and method for installing an application on a portable computer
USRE44653E1 (en) 1999-04-05 2013-12-17 Sandisk Il, Ltd USB flash memory device with integral memory technology driver
USRE44641E1 (en) 1999-04-05 2013-12-10 Sandisk Il, Ltd USB flash memory device with integrated USB controller
USRE42443E1 (en) 1999-04-05 2011-06-07 Sandisk Il Ltd. Architecture for a universal serial bus-based PC flash disk
USRE42397E1 (en) * 1999-04-05 2011-05-24 Sandisk Il Ltd. Architecture for a universal serial bus-based PC flash disk
EP1056001A3 (en) * 1999-05-26 2004-08-04 Xerox Corporation System and method for dynamically loading platform independent drivers
US6421755B1 (en) * 1999-05-26 2002-07-16 Dell Usa, L.P. System resource assignment for a hot inserted device
EP1056001A2 (en) * 1999-05-26 2000-11-29 Xerox Corporation System and method for dynamically loading platform independent drivers
US8212893B2 (en) 1999-06-08 2012-07-03 Verisign, Inc. Digital camera device and methodology for distributed processing and wireless transmission of digital images
US6772328B1 (en) * 1999-06-18 2004-08-03 Samsung Electronics Co., Ltd. Dynamic initialization of processor module via motherboard interface
US6687814B1 (en) * 1999-07-12 2004-02-03 Micron Technology, Inc. Controller with interface attachment
US20040209531A1 (en) * 1999-07-12 2004-10-21 Duppong Charles M. Controller with interface attachment
US6925407B2 (en) 1999-07-12 2005-08-02 Micron Technology, Inc. Controller with interface attachment
US20050177251A1 (en) * 1999-07-12 2005-08-11 Duppong Charles M. Controller with interface attachment
US7209794B2 (en) 1999-07-12 2007-04-24 Micron Technology, Inc. Controller with interface attachment
WO2001007984A3 (en) * 1999-07-27 2008-02-28 Cais Inc Universal serial bus adapter with automatic installation
WO2001007984A2 (en) * 1999-07-27 2001-02-01 Cais, Inc. Universal serial bus adapter with automatic installation
US6704824B1 (en) 1999-07-27 2004-03-09 Inline Connection Corporation Universal serial bus adapter with automatic installation
US20060117193A1 (en) * 1999-08-12 2006-06-01 Robert Gosselin Power management in mobile computer for allocating power to peripheral device when version of expansion port may support second amount of power
US6539476B1 (en) * 1999-08-12 2003-03-25 Handspring, Inc. Mobile computer system capable for copying set-up application including removal routine from peripheral device for removing device programs after the device is removed
US6810481B1 (en) * 1999-09-01 2004-10-26 Canon Kabushiki Kaisha Electronic device, control method therefor, and storage medium providing power supply control function
US20060259596A1 (en) * 1999-10-18 2006-11-16 Birse Cameron S Method and apparatus for administering the operating system of a net-booted environment
US7865579B2 (en) 1999-10-18 2011-01-04 Apple Inc. Method and apparatus for administering the operating system of a net-booted environment
US7653755B1 (en) * 1999-11-02 2010-01-26 Apple Inc. Method and apparatus for determining communication paths
US7191266B1 (en) 1999-11-02 2007-03-13 Apple Computer, Inc. Method and apparatus for supporting and presenting multiple serial bus nodes using distinct configuration ROM images
US6618750B1 (en) * 1999-11-02 2003-09-09 Apple Computer, Inc. Method and apparatus for determining communication paths
US7506088B2 (en) 1999-11-02 2009-03-17 Apple Inc. Method and apparatus for supporting and presenting multiple serial bus nodes using distinct configuration ROM images
US20050117528A1 (en) * 1999-11-05 2005-06-02 Apple Computer, Inc. Method and apparatus for preventing loops in a full-duplex bus
US7194564B2 (en) 1999-11-05 2007-03-20 Apple Computer, Inc. Method and apparatus for preventing loops in a full-duplex bus
US7389371B2 (en) 1999-11-05 2008-06-17 Apple Inc. Method and apparatus for loop breaking in a data bus
US7096302B2 (en) 1999-11-16 2006-08-22 Apple Computer, Inc. Method and apparatus for accelerating detection of serial bus device speed signals
US20050114582A1 (en) * 1999-11-16 2005-05-26 Apple Computer, Inc. Method and apparatus for accelerating detection of serial bus device speed signals
US6668376B1 (en) * 2000-01-07 2003-12-23 Ricoh Company, Ltd. System and method for automatically loading a device driver
US20040128676A1 (en) * 2000-01-07 2004-07-01 Wayne Wang System and method for automatically loading a device driver
US7280490B1 (en) 2000-01-18 2007-10-09 Apple Inc. Method and apparatus for border node behavior on a full-duplex bus
US7266617B1 (en) 2000-01-18 2007-09-04 Apple Inc. Method and apparatus for border node behavior on a full-duplex bus
US7822898B2 (en) 2000-01-18 2010-10-26 Apple Inc. Method and apparatus for border node behavior on a full-duplex bus
US7280491B1 (en) 2000-01-18 2007-10-09 Apple Inc. Method and apparatus for border node behavior on a full-duplex bus
US7490174B2 (en) 2000-01-18 2009-02-10 Apple Inc. Method and apparatus for border node behavior on a full-duplex bus
US7317694B1 (en) 2000-01-18 2008-01-08 Apple Inc. Method and apparatus for border node behavior on a full-duplex bus
US7352708B1 (en) 2000-01-18 2008-04-01 Apple Inc. Method and apparatus for border node behavior on a full-duplex bus
US8503703B2 (en) 2000-01-20 2013-08-06 Starkey Laboratories, Inc. Hearing aid systems
US9357317B2 (en) 2000-01-20 2016-05-31 Starkey Laboratories, Inc. Hearing aid systems
US9344817B2 (en) 2000-01-20 2016-05-17 Starkey Laboratories, Inc. Hearing aid systems
US6754723B2 (en) * 2000-02-04 2004-06-22 Minolta Co., Ltd. System comprising host device that determines compatibility of firmware for connected peripheral device and downloads optimum firmware if peripheral device is not compatible
US20010027517A1 (en) * 2000-02-04 2001-10-04 Takeshi Kato System comprising host device and peripheral device
US7237101B1 (en) * 2000-02-12 2007-06-26 International Business Machines Corporation Methods and apparatus for self describing devices
US8295302B2 (en) 2000-02-17 2012-10-23 Apple Inc. Methods and apparatus for ensuring compatibility on a high performance serial bus
US7050453B1 (en) 2000-02-17 2006-05-23 Apple Computer, Inc. Method and apparatus for ensuring compatibility on a high performance serial bus
US9215097B2 (en) 2000-02-17 2015-12-15 Apple, Inc. Methods and apparatus for ensuring compatibility on a high performance serial bus
US7701966B2 (en) 2000-02-17 2010-04-20 Apple Inc Method and apparatus for ensuring compatibility on a high performance serial bus
US6813669B1 (en) * 2000-02-24 2004-11-02 International Business Machines Corporation Agent provided by USB device for executing USB device dependent program in USB host
US6915337B1 (en) * 2000-03-07 2005-07-05 Ricoh Co. Ltd. Method and system for updating the device driver of a business office appliance
US6990208B1 (en) * 2000-03-08 2006-01-24 Jbl, Incorporated Vehicle sound system
US7461178B2 (en) * 2000-03-16 2008-12-02 Canon Kabushiki Kaisha Distributed processing system and its control method
US20040205780A1 (en) * 2000-03-16 2004-10-14 Canon Kabushiki Kaisha Distributed processing system and its control method
US7072991B2 (en) 2000-04-04 2006-07-04 Sony Corporation Audio visual system having a serial bus for identifying devices connected to the external terminals of an amplifier in the system
US20010047440A1 (en) * 2000-04-04 2001-11-29 Yoshiyuki Takaku Information processing device, control device, information processing system, and methods thereof
US7072990B2 (en) 2000-04-04 2006-07-04 Sony Corporation Audio visual system having a serial bus for identifying devices connected to the external terminals of an amplifier in the system
US20050188132A1 (en) * 2000-04-04 2005-08-25 Yoshiyuki Takaku Audio visual system having a serial bus for identifying devices connected to the external terminals of an amplifier in the system
US20050188134A1 (en) * 2000-04-04 2005-08-25 Yoshiyuki Takaku Audio visual system having a serial bus for identifying devices connected to the external terminals of an amplifier in the system
US20050188133A1 (en) * 2000-04-04 2005-08-25 Yoshiyuki Takaku Audio visual system having a serial bus for identifying devices connected to the external terminals of an amplifier in the system
US20050172042A1 (en) * 2000-04-04 2005-08-04 Yoshiyuki Takaku Audio visual system having a serial bus for identifying devices connected to the external terminals of an amplifier in the system
US7072992B2 (en) 2000-04-04 2006-07-04 Sony Corporation Audio visual system having a serial bus for identifying devices connected to the external terminals of an amplifier in the system
US6910085B2 (en) * 2000-04-04 2005-06-21 Sony Corporation Audio visual system having a serial bus for identifying devices connected to the external terminals of an amplifier in the system
US7072993B2 (en) 2000-04-04 2006-07-04 Sony Corporation Audio visual system having a serial bus for identifying devices connected to the external terminals of an amplifier in the system
US7861025B2 (en) 2000-04-21 2010-12-28 Apple Inc. Method and apparatus for automatic detection and healing of signal pair crossover on a high performance serial bus
US7058872B1 (en) 2000-04-21 2006-06-06 Apple Computer, Inc. Method and apparatus for generating jitter test patterns on a high performance serial bus
US8407535B2 (en) 2000-04-21 2013-03-26 Apple Inc. Method and apparatus for generating jitter test patterns on a high performance serial bus
US7401173B1 (en) 2000-04-21 2008-07-15 Apple Inc. Method and apparatus for automatic detection and healing of signal pair crossover on a high performance serial bus
US9083525B2 (en) 2000-04-21 2015-07-14 Apple Inc. Method and apparatus for generating jitter test patterns on a high performance serial bus
US20010044857A1 (en) * 2000-05-17 2001-11-22 Pham Tuan Huu Component installation tool
US7526775B2 (en) * 2000-05-17 2009-04-28 Aol Llc, A Delaware Limited Liability Company Component installation tool
US7426551B1 (en) 2000-05-31 2008-09-16 Mcafee, Inc. System, method and computer program product for dynamic system adaptation using contracts
EP1299794B1 (en) * 2000-07-13 2010-02-10 International Business Machines Corporation System and method for establishing wireless connection
US7734758B1 (en) * 2000-07-19 2010-06-08 Cisco Technology, Inc. USB encapsulation for network transmission
US20020016908A1 (en) * 2000-07-31 2002-02-07 Makoto Tanaka Electronic equipment communication system, external device for the communication system, electronic equipment and electronic equipment communication method
WO2002010906A3 (en) * 2000-07-31 2003-07-31 Sony Computer Entertainment Inc Electronic equipment communication system, external device for the communication system, and electronic equipment
US6871239B2 (en) * 2000-07-31 2005-03-22 Sony Computer Entertainment, Inc. Electronic equipment communication system, external device for the communication system, electronic equipment and electronic equipment communication method
WO2002010906A2 (en) * 2000-07-31 2002-02-07 Sony Computer Entertainment Inc. Electronic equipment communication system, external device for the communication system, and electronic equipment
JP2002041442A (en) * 2000-07-31 2002-02-08 Sony Computer Entertainment Inc Electronic equipment communication system, external device, electronic equipment, and communication method of the electronic equipment
US7325236B2 (en) * 2000-08-09 2008-01-29 Sony Corporation Electronic device, apparatus using the same, and method of reading out data
US20020052982A1 (en) * 2000-08-09 2002-05-02 Yoshiyasu Kubota Electronic device, apparatus using the same, and method of reading out data
US6701192B1 (en) 2000-09-13 2004-03-02 Ncr Corporation Wiring hub for a retail terminal
US7610331B1 (en) * 2000-09-13 2009-10-27 Lightsurf Technologies, Inc. System and method for dynamic uploading and execution of applications and drivers between devices
US8099502B2 (en) 2000-09-13 2012-01-17 Syniverse Icx Corporation System and method for dynamic uploading and execution of applications and drivers between devices
US20020065872A1 (en) * 2000-09-13 2002-05-30 Genske Timothy W. System and method for dynamic uploading and execution of applications and drivers between devices
US20040221081A1 (en) * 2000-09-26 2004-11-04 Baogang Yao Automatic server-side plug-and-play without user intervention
US20040267881A1 (en) * 2000-09-26 2004-12-30 Microsoft Corporation Automatic server-side plug-and-play without user intervention
US6813670B1 (en) * 2000-09-26 2004-11-02 Microsoft Corporation Automatic server-side plug-and-play without user intervention
US20020065950A1 (en) * 2000-09-26 2002-05-30 Katz James S. Device event handler
US20020092014A1 (en) * 2000-12-08 2002-07-11 Yasuo Shibusawa Software installing method and system
US7076536B2 (en) 2000-12-21 2006-07-11 Microsoft Corporation Method and system to access software pertinent to an electronic peripheral device at an address based on a peripheral device identifier
US20020083228A1 (en) * 2000-12-21 2002-06-27 Chiloyan John H. Method and system to access software pertinent to an electronic peripheral device at an address based on a peripheral device identifier
US20020083315A1 (en) * 2000-12-22 2002-06-27 Patel Chinmay S. System for storing optional modules in non-volatile memory for expansion ROM
US6907523B2 (en) * 2000-12-22 2005-06-14 Intel Corporation Method and apparatus utilizing an agent on the host processing system to initiate loading of a program in response to an event at the host processing system
US7117280B2 (en) * 2000-12-27 2006-10-03 Intel Corporation Network based intra-system communications architecture
EP1223722A3 (en) * 2001-01-12 2004-08-04 Microsoft Corporation Method and system to access software pertinent to a peripheral device
EP1223722A2 (en) * 2001-01-12 2002-07-17 Microsoft Corporation Method and system to access software pertinent to a peripheral device
US7165109B2 (en) * 2001-01-12 2007-01-16 Microsoft Corporation Method and system to access software pertinent to an electronic peripheral device based on an address stored in a peripheral device
US20020095501A1 (en) * 2001-01-12 2002-07-18 Chiloyan John H. Method and system to access software pertinent to an electronic peripheral device based on an address stored in a peripheral device
US20020103995A1 (en) * 2001-01-31 2002-08-01 Owen Jonathan M. System and method of initializing the fabric of a distributed multi-processor computing system
US6760838B2 (en) * 2001-01-31 2004-07-06 Advanced Micro Devices, Inc. System and method of initializing and determining a bootstrap processor [BSP] in a fabric of a distributed multiprocessor computing system
US20020103861A1 (en) * 2001-01-31 2002-08-01 Janz Susan M. Manipulating fleet devices in an index
US20020194583A1 (en) * 2001-04-27 2002-12-19 Masayuki Kitagawa System and method for automatically transferring data to a host
US20040133722A1 (en) * 2001-04-30 2004-07-08 Croyle Richard Lancaster Communication interface for an electronic device
US7870319B2 (en) 2001-04-30 2011-01-11 Nokia Corporation Communication interface for an electronic device
US20090307381A1 (en) * 2001-04-30 2009-12-10 Nokia Corporation Communication interface for an electronic device
US7627704B2 (en) * 2001-04-30 2009-12-01 Nokia Corporation Communication interface for an electronic device
GB2378550A (en) * 2001-06-11 2003-02-12 Hewlett Packard Co System and Method of Providing Application Software for a Peripheral Device
US20020188938A1 (en) * 2001-06-11 2002-12-12 Dong Mimi Chu System and method for providing application software for a peripheral device
US20030046447A1 (en) * 2001-07-31 2003-03-06 Konstantin Kouperchliak Device-related software installation
US6868456B2 (en) * 2001-08-20 2005-03-15 Mtek Vision Co., Ltd. Universal serial bus device initialized with a real descriptor stored in host and method for initializing the same
US20030037197A1 (en) * 2001-08-20 2003-02-20 Kim Do Hyung Universal serial bus device initialized with a real descriptor stored in host and method for initializing the same
US7389332B1 (en) 2001-09-07 2008-06-17 Cisco Technology, Inc. Method and apparatus for supporting communications between nodes operating in a master-slave configuration
US7430736B2 (en) * 2001-10-03 2008-09-30 Toshiba Tec Kabushiki Kaisha Download and installation of software from a network printer
US20030066066A1 (en) * 2001-10-03 2003-04-03 Toshiba Tec Kabushiki Kaisha Download and installation of software from a network printer
US20030119975A1 (en) * 2001-10-05 2003-06-26 Hironao Fujiki Silicone rubber compositions for rubber construction materials
KR100544179B1 (en) * 2001-11-15 2006-01-23 삼성전자주식회사 Method and apparatus for integrated management of drivers for the computer peripherals
US7552265B2 (en) * 2002-01-23 2009-06-23 Xerox Corporation System and method for providing context information
US20030149823A1 (en) * 2002-01-23 2003-08-07 Xerox Corporation System and method for providing context information
US7724281B2 (en) 2002-02-04 2010-05-25 Syniverse Icx Corporation Device facilitating efficient transfer of digital content from media capture device
US7133938B2 (en) * 2002-02-26 2006-11-07 Fujitsu Component Limited Hub controller with connected first and second device wherein second device contains drivers and first device in disable state before driver read from second device
US20030163611A1 (en) * 2002-02-26 2003-08-28 Fujitsu Component Limited Electronic device and method of controlling the same
DE10208530A1 (en) * 2002-02-27 2003-09-18 Moeller Gmbh Method for configuration and operation of peripheral devices connected to a host unit via a field bus in which the peripherals are supplied with a configuration file so that they can be directly configured by the host over the bus
US7353259B1 (en) 2002-03-07 2008-04-01 Cisco Technology, Inc. Method and apparatus for exchanging configuration information between nodes operating in a master-slave configuration
US7856480B2 (en) 2002-03-07 2010-12-21 Cisco Technology, Inc. Method and apparatus for exchanging heartbeat messages and configuration information between nodes operating in a master-slave configuration
US7421478B1 (en) 2002-03-07 2008-09-02 Cisco Technology, Inc. Method and apparatus for exchanging heartbeat messages and configuration information between nodes operating in a master-slave configuration
US20030196007A1 (en) * 2002-04-12 2003-10-16 Baron John M. Device-resident driver system and method
GB2390188A (en) * 2002-04-12 2003-12-31 Hewlett Packard Co Device-resident driver system
US20030200353A1 (en) * 2002-04-19 2003-10-23 Vikas Dogra Browser-implemented upload/download of a driver
US7587465B1 (en) 2002-04-22 2009-09-08 Cisco Technology, Inc. Method and apparatus for configuring nodes as masters or slaves
US7730210B2 (en) 2002-04-22 2010-06-01 Cisco Technology, Inc. Virtual MAC address system and method
US20060265869A1 (en) * 2002-05-01 2006-11-30 Prolific Technology Inc. Method of installing a plug and play device driver and software
US7240098B1 (en) * 2002-05-09 2007-07-03 Cisco Technology, Inc. System, method, and software for a virtual host bus adapter in a storage-area network
WO2003102752A1 (en) * 2002-05-31 2003-12-11 Simpletech, Inc. Removable storage device
US20090124129A1 (en) * 2002-05-31 2009-05-14 Stec, Inc. Removable storage device
US20040042323A1 (en) * 2002-05-31 2004-03-04 Masoud Moshayedi Removable storage device
US20040003157A1 (en) * 2002-06-27 2004-01-01 Lee Chun Liang Hot plug protection device for hard disk drives
US8838731B2 (en) 2002-10-01 2014-09-16 Apple Inc. Method and apparatus for dynamically locating resources
US10367917B2 (en) 2002-10-01 2019-07-30 Apple Inc. Method and apparatus for dynamically locating resources
US9432481B2 (en) 2002-10-01 2016-08-30 Apple Inc. Method and apparatus for dynamically locating resources
US20060071820A1 (en) * 2002-10-21 2006-04-06 Lichen Wang Universal mobile keyboard
US20040107275A1 (en) * 2002-12-03 2004-06-03 Hardcastle Michael J. System and method for the hybrid harvesting of information from peripheral devices
US7437439B2 (en) * 2002-12-03 2008-10-14 Hewlett-Packard Development Company, L.P. System and method for the hybrid harvesting of information from peripheral devices
US20040122989A1 (en) * 2002-12-20 2004-06-24 Lyman Hall Method of determining code to download for runtime configuration
US7353372B2 (en) * 2002-12-24 2008-04-01 Intel Corporation Detection of support components for add-in card
US20040122992A1 (en) * 2002-12-24 2004-06-24 Scott Janus Detection of support components for add-in card
EP1434128A1 (en) * 2002-12-27 2004-06-30 Neodio Technologies Corporation Plug-and-play interconnection architecture and method with in-device storage module in peripheral device
US7058801B2 (en) * 2003-02-19 2006-06-06 American Megatrends, Inc. Methods and computer systems for updating values of a DSDT
US20040162975A1 (en) * 2003-02-19 2004-08-19 Yakovlev Sergiy B. Methods and computer systems for updating values of a DSDT
US7475238B1 (en) 2003-02-19 2009-01-06 American Megatrends, Inc. Methods and computer systems for selection of a DSDT
US8463951B1 (en) * 2003-03-27 2013-06-11 Nvidia Corporation Unified driver architecture device identifier strategy
US7904599B1 (en) 2003-03-28 2011-03-08 Cisco Technology, Inc. Synchronization and auditing of zone configuration data in storage-area networks
US7433300B1 (en) 2003-03-28 2008-10-07 Cisco Technology, Inc. Synchronization of configuration data in storage-area networks
US20050216717A1 (en) * 2003-04-08 2005-09-29 Synology, Inc. Clientless external storage device
US20040205778A1 (en) * 2003-04-08 2004-10-14 Wong Yin Hui System and method for installing portable device drivers
US20040260853A1 (en) * 2003-04-11 2004-12-23 Samsung Electronics Co., Ltd. Computer system and method of setting an interface card therein
US20040255338A1 (en) * 2003-06-13 2004-12-16 Apple Computer, Inc. Interface for sending synchronized audio and video data
US7353284B2 (en) 2003-06-13 2008-04-01 Apple Inc. Synchronized transmission of audio and video data from a computer to a client via an interface
US20040255339A1 (en) * 2003-06-13 2004-12-16 Apple Computer, Inc Synchronized transmission of audio and video data from a computer to a client via an interface
US20040252231A1 (en) * 2003-06-13 2004-12-16 Apple Computer, Inc. Synthesis of vertical blanking signal
US7970926B2 (en) 2003-06-13 2011-06-28 Apple Inc. Synchronized transmission of audio and video data from a computer to a client via an interface
US7668099B2 (en) 2003-06-13 2010-02-23 Apple Inc. Synthesis of vertical blanking signal
US8838825B2 (en) 2003-06-13 2014-09-16 Apple Inc. Synchronized transmission of audio and video data from a computer to a client via an interface
US7451208B1 (en) 2003-06-28 2008-11-11 Cisco Technology, Inc. Systems and methods for network address failover
US8275910B1 (en) 2003-07-02 2012-09-25 Apple Inc. Source packet bridge
US9026680B2 (en) 2003-07-02 2015-05-05 Apple Inc. Source packet bridge
US20050028172A1 (en) * 2003-07-30 2005-02-03 Matsushita Electric Industrial Co., Ltd. Method and apparatus for installing software
WO2005010751A2 (en) * 2003-07-30 2005-02-03 Matsushita Electric Industrial Co,. Ltd. Method and system for installing a device driver on a host by uploading the driver from the device
WO2005010751A3 (en) * 2003-07-30 2005-05-19 Matsushita Electric Ind Co Ltd Method and system for installing a device driver on a host by uploading the driver from the device
FR2858864A1 (en) * 2003-08-11 2005-02-18 Infineon Technologies Ag PERIPHERAL APPARATUS WITH USB CONNECTION AND METHOD FOR COMMISSIONING THE PERIPHERAL DEVICE WITH USB CONNECTION
DE10336877B3 (en) * 2003-08-11 2005-02-17 Infineon Technologies Ag USB-based peripheral device and procedure for commissioning the USB-based peripheral device
US20050038934A1 (en) * 2003-08-11 2005-02-17 Infineon Technologies Ag USB-based peripheral device and method for starting up the USB-based peripheral device
US20050071523A1 (en) * 2003-09-25 2005-03-31 International Business Machines Corporation Method and system for automatically determining I/O connector configuration
US20080235407A1 (en) * 2003-09-25 2008-09-25 International Business Machines Corporation System for automatically determining i/o connector configuration
US9086894B2 (en) 2003-09-25 2015-07-21 Toshiba Global Commerce Solutions Holdings Corporation System for automatically determining I/O connector configuration
US7516249B2 (en) * 2003-09-25 2009-04-07 International Business Machines Corporation Method for automatically determining I/O connector configuration
US20050069361A1 (en) * 2003-09-30 2005-03-31 Jianxin Wang System and method to communicate to controller mapped by print server
US7535588B2 (en) 2003-09-30 2009-05-19 Toshiba Corporation System and method to communicate to controller mapped by print server
US7774774B1 (en) * 2003-10-22 2010-08-10 Apple Inc. Software setup system
WO2005050443A2 (en) * 2003-11-12 2005-06-02 Intel Corporation Method, system, and program for interfacing with a network adaptor supporting a plurality of devices
US7437738B2 (en) 2003-11-12 2008-10-14 Intel Corporation Method, system, and program for interfacing with a network adaptor supporting a plurality of devices
WO2005050443A3 (en) * 2003-11-12 2005-09-22 Intel Corp Method, system, and program for interfacing with a network adaptor supporting a plurality of devices
US20050102682A1 (en) * 2003-11-12 2005-05-12 Intel Corporation Method, system, and program for interfacing with a network adaptor supporting a plurality of devices
CN1902585B (en) * 2003-11-12 2011-03-09 英特尔公司 Method, system, and program for interfacing with a network adaptor supporting a plurality of devices
US20050132352A1 (en) * 2003-12-11 2005-06-16 Konica Minolta Business Technologies, Inc. Installation of hardware devices
US20050132333A1 (en) * 2003-12-12 2005-06-16 Oracle International Corporation Methods and systems for testing software applications
US8392742B2 (en) 2003-12-29 2013-03-05 Apple Inc. Cyclemaster synchronization in a distributed bridge
US7237135B1 (en) 2003-12-29 2007-06-26 Apple Inc. Cyclemaster synchronization in a distributed bridge
US7987381B2 (en) 2003-12-29 2011-07-26 Apple Inc. Cyclemaster synchronization in a distributed bridge
US7734855B2 (en) 2003-12-29 2010-06-08 Apple Inc. Gap count analysis for the P1394a BUS
US7308517B1 (en) 2003-12-29 2007-12-11 Apple Inc. Gap count analysis for a high speed serialized bus
US20050162675A1 (en) * 2004-01-23 2005-07-28 Sharp Laboratories Of America, Inc. Method and apparatus for embedded driver download using raw imaging protocol
US7715027B2 (en) 2004-01-23 2010-05-11 Sharp Laboratories Of America, Inc. Method and apparatus for embedded driver download using raw imaging protocol
US20050228979A1 (en) * 2004-04-08 2005-10-13 Fujitsu Limited Stored-program device
JP2005301513A (en) * 2004-04-08 2005-10-27 Fujitsu Ltd Device with built-in program
US20080071935A1 (en) * 2004-06-10 2008-03-20 Microsoft Corporation Self-Installing Computer Peripherals
EP1662385A3 (en) * 2004-06-10 2008-03-19 Microsoft Corporation Self-installing computer peripherals
US20060119881A1 (en) * 2004-12-04 2006-06-08 Zarco Maria F Methods and apparatus for managing configuration of an imaging device peripheral
US20060143621A1 (en) * 2004-12-29 2006-06-29 Wang Dan T S Self-installing PCMCIA network card
US20060195832A1 (en) * 2005-02-25 2006-08-31 Microsoft Corporation Modules for composing computer systems
WO2006092552A1 (en) * 2005-03-04 2006-09-08 Cambridge Silicon Radio Limited Installing drivers
US20080195768A1 (en) * 2005-03-04 2008-08-14 Cambridge Silicon Radio Limited Installing Drivers
US7668986B2 (en) 2005-03-04 2010-02-23 Cambridge Silicon Radio Limited Installing drivers
DE102005025875A1 (en) * 2005-06-06 2006-12-07 Audi Ag Motor vehicle, has control device with processors comprising respective operating systems, each with file system, in which program units are represented on data files, and application programming interface comprising device driver
US8056072B2 (en) * 2005-10-31 2011-11-08 Microsoft Corporation Rebootless display driver upgrades
US20070101343A1 (en) * 2005-10-31 2007-05-03 Microsoft Corporation Rebootless display driver upgrades
US8302089B2 (en) 2005-10-31 2012-10-30 Microsoft Corporation Rebootless display driver upgrades
US7668974B2 (en) * 2005-11-01 2010-02-23 International Business Machines Corporation Method and system for local provisioning of device drivers for portable storage devices
US20070101118A1 (en) * 2005-11-01 2007-05-03 Internatoinal Business Machines Corporation Method and system for local provisioning of device drivers for portable storage devices
WO2007089769A3 (en) * 2006-01-31 2008-09-25 Home Free Entpr Lp System and method for automated delivery of software
US20070177426A1 (en) * 2006-01-31 2007-08-02 Richard Dellacona System and method for automated delivery of software payload
WO2007089769A2 (en) * 2006-01-31 2007-08-09 Home Free Enterprises, Lp System and method for automated delivery of software
US20070198995A1 (en) * 2006-01-31 2007-08-23 Richard Dellacona System and method for automated delivery of software
US7783878B2 (en) * 2006-04-28 2010-08-24 Nokia Corporation Methods for decoupling hardware settings from software
US20070255939A1 (en) * 2006-04-28 2007-11-01 Nokia Corporation Methods, device, mobile terminal and computer program product for decoupling hardware settings from software
DE102006023019A1 (en) * 2006-05-17 2007-11-22 Deutsches Zentrum für Luft- und Raumfahrt e.V. Information technology-component e.g. printer, for use with personal computer, has memory medium connected with universal serial bus interface, where data required for operation of component are stored in memory medium
US8300862B2 (en) 2006-09-18 2012-10-30 Starkey Kaboratories, Inc Wireless interface for programming hearing assistance devices
US7818467B2 (en) 2007-01-26 2010-10-19 Key Criteria Technology Limited Method of indentifying devices in mobile and desktop environments
US20080195769A1 (en) * 2007-01-26 2008-08-14 Juraid Anwer Method of identifying devices in mobile and desktop environments
US7899959B2 (en) * 2007-01-26 2011-03-01 Key Criteria Technology Limited Method of loading software in mobile and desktop environments
US20080214172A1 (en) * 2007-01-26 2008-09-04 Juraid Anwer Method of loading software in mobile and desktop environments
US20080244567A1 (en) * 2007-03-30 2008-10-02 Konica Minolta Systems Laboratory, Inc. Portable printer driver
US8315269B1 (en) 2007-04-18 2012-11-20 Cypress Semiconductor Corporation Device, method, and protocol for data transfer between host device and device having storage interface
US20080301497A1 (en) * 2007-06-04 2008-12-04 Silicon Motion, Inc. Testing Apparatus, System, and Method for Testing at Least One Device with a Connection Interface
US20090055569A1 (en) * 2007-08-24 2009-02-26 Cypress Semiconductor Corporation, A Corporation Of The State Of Delaware Bridge device with page-access based processor interface
US8037228B2 (en) 2007-08-24 2011-10-11 Cypress Semiconductor Corporation Bridge device with page-access based processor interface
US8090894B1 (en) 2007-09-21 2012-01-03 Cypress Semiconductor Corporation Architectures for supporting communication and access between multiple host devices and one or more common functions
US10460085B2 (en) 2008-03-13 2019-10-29 Mattel, Inc. Tablet computer
US20100281194A1 (en) * 2008-09-02 2010-11-04 Robb Fujioka Modular application computing apparatus, system and method
US20100313171A1 (en) * 2009-06-05 2010-12-09 Funai Electric Co., Ltd. Information Display System and Information Display Apparatus
US8757171B2 (en) 2009-10-06 2014-06-24 Mattel, Inc. Finger positioning device for a printer
US20110108047A1 (en) * 2009-10-06 2011-05-12 Goff Christopher L Finger positioning device for a printer
GB2499949B (en) * 2010-12-20 2018-08-29 Intel Corp Method and apparatus for integrating driver(s) of a portable device into the portable device
US8862787B2 (en) * 2010-12-20 2014-10-14 Intel Incorporation Method and apparatus for integrating driver(s) of a portable device into the portable device
US20120159521A1 (en) * 2010-12-20 2012-06-21 Kriegelstein J K Method and apparatus for integrating driver(s) of a portable device into the portable device
TWI512622B (en) * 2010-12-20 2015-12-11 Intel Corp Method and apparatus for integrating driver(s) of a portable device into the portable device
JP2011096285A (en) * 2011-02-02 2011-05-12 Fujitsu Ltd Device and device recognition method
US20130139184A1 (en) * 2011-11-30 2013-05-30 Lsi Corporation Method for embedding a host driver within a device
US9229836B2 (en) 2012-11-30 2016-01-05 Intel Corporation Coexisting standard and proprietary connection usage
CN104769565B (en) * 2012-11-30 2019-11-19 英特尔公司 The standard coexisted and proprietary connection use
CN104769565A (en) * 2012-11-30 2015-07-08 英特尔公司 Coexisting standard and proprietary connection usage
WO2014085162A1 (en) * 2012-11-30 2014-06-05 Intel Corporation Coexisting standard and proprietary connection usage
US9542172B2 (en) 2013-02-05 2017-01-10 Apple Inc. Automatic updating of applications
US9977668B2 (en) 2013-02-05 2018-05-22 Apple Inc. Automatic updating of applications
US9824059B2 (en) 2014-08-30 2017-11-21 Microsoft Technology Licensing, Llc Child serial device discovery protocol
US10248431B2 (en) 2015-01-06 2019-04-02 Vertiv It Systems, Inc. System and method for presenting driver install files when enabling a USB device
GB2549892A (en) * 2015-01-06 2017-11-01 Avocent Huntsville Llc System and method for presenting driver install files when enabling a USB device
WO2016112008A1 (en) * 2015-01-06 2016-07-14 Avocent Huntsville Corp. System and method for presenting driver install files when enabling a usb device
GB2549892B (en) * 2015-01-06 2021-08-25 Vertiv It Systems Inc System and method for presenting driver install files when enabling a USB device
US11113113B2 (en) 2017-09-08 2021-09-07 Apple Inc. Systems and methods for scheduling virtual memory compressors

Similar Documents

Publication Publication Date Title
US6009480A (en) Integrated device driver wherein the peripheral downloads the device driver via an I/O device after it is determined that the I/O device has the resources to support the peripheral device
US6487608B2 (en) Method for automatically configuring network interface card and capable of randomizing a media access controller address of the network interface card
US6823526B2 (en) Computer-based system and method for automatic configuration of an external device
US5761448A (en) Physical-to-logical bus mapping scheme for computer systems having multiple PCI bus configuration
US6661526B1 (en) Printer drivers using filters that are operating system-independent and printer-independent
US5872968A (en) Data processing network with boot process using multiple servers
US6668376B1 (en) System and method for automatically loading a device driver
US5748980A (en) System for configuring a computer system
JP4327363B2 (en) Automatic generation of ACPI source language for peripheral resource configuration
US6336152B1 (en) Method for automatically configuring devices including a network adapter without manual intervention and without prior configuration information
US6684327B1 (en) Extensible, flexible, memory efficient technique for network boot without special DHCP/PXE hardware
CN1323353C (en) Information processor, control method and storage medium for said information processor
EP1482703B1 (en) Computer system and method for supporting network-enabled devices
JPH08272717A (en) Modem interface
JPH11242646A (en) In-accessory resource offset mechanism
JP2000298567A (en) Internet base printing
WO2005010751A2 (en) Method and system for installing a device driver on a host by uploading the driver from the device
US20030131149A1 (en) Installer for driver of network device
US20040199600A1 (en) Method and apparatus for program installation in a modular network
JPH11134135A (en) Printer control system
US6754759B1 (en) Transfer of information between devices on different buses
JP2001043039A (en) Data processor, printing controller, driver managing, method and storage medium with computer-readable program stored thereon
US20060136706A1 (en) Product configuration during boot process
JP2000339075A (en) Data processor, print server, data processing method, and storage medium storing computer readable program
JP2005115440A (en) Computer program for making computer perform uninstallation

Legal Events

Date Code Title Description
AS Assignment

Owner name: TELXON CORPORATION, OHIO

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:PLESO, MARC L.;REEL/FRAME:008721/0515

Effective date: 19970912

AS Assignment

Owner name: BANK OF NEW YORK, THE, NEW YORK

Free format text: SECURITY INTEREST;ASSIGNOR:TELXON CORPORATION;REEL/FRAME:009817/0901

Effective date: 19990326

AS Assignment

Owner name: BANK ONE, NA, OHIO

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:TELXON CORPORATION, A DELAWARE CORPORATION;REEL/FRAME:009866/0723

Effective date: 19990326

AS Assignment

Owner name: FOOTHILL CAPITAL CORPORATION AS AGENT, CALIFORNIA

Free format text: SECURITY INTEREST;ASSIGNOR:TELXON CORPORATION;REEL/FRAME:010216/0081

Effective date: 19990826

Owner name: TELXON CORPORATION, OHIO

Free format text: RELEASE OF SECURITY INTEREST;ASSIGNOR:BANK ONE, NA;REEL/FRAME:010216/0050

Effective date: 19990830

Owner name: TELXON CORPORATION, OHIO

Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:THE BANK OF NEW YORK, AS AGENT;REEL/FRAME:010216/0776

Effective date: 19990830

STCF Information on status: patent grant

Free format text: PATENTED CASE

CC Certificate of correction
AS Assignment

Owner name: SYMBOL TECHNOLOGIES, INC., NEW YORK

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:TELXON CORPORATION;REEL/FRAME:012795/0070

Effective date: 20020327

FPAY Fee payment

Year of fee payment: 4

AS Assignment

Owner name: JPMORGAN CHASE BANK, N.A., NEW YORK

Free format text: SECURITY INTEREST;ASSIGNOR:SYMBOL TECHNOLOGIES, INC.;REEL/FRAME:016116/0203

Effective date: 20041229

AS Assignment

Owner name: TELXON CORPORATION, OHIO

Free format text: RELEASE OF SECURITY AGREEMENT;ASSIGNOR:WELLS FARGO FOOTHILL, INC. (FORMERLY FOOTHILL CAPITAL CORPORATION);REEL/FRAME:016621/0303

Effective date: 20050716

FPAY Fee payment

Year of fee payment: 8

AS Assignment

Owner name: SYMBOL TECHNOLOGIES, INC., NEW YORK

Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:JPMORGANCHASE BANK, N.A.;REEL/FRAME:025441/0228

Effective date: 20060901

FPAY Fee payment

Year of fee payment: 12

AS Assignment

Owner name: MORGAN STANLEY SENIOR FUNDING, INC. AS THE COLLATERAL AGENT, MARYLAND

Free format text: SECURITY AGREEMENT;ASSIGNORS:ZIH CORP.;LASER BAND, LLC;ZEBRA ENTERPRISE SOLUTIONS CORP.;AND OTHERS;REEL/FRAME:034114/0270

Effective date: 20141027

Owner name: MORGAN STANLEY SENIOR FUNDING, INC. AS THE COLLATE

Free format text: SECURITY AGREEMENT;ASSIGNORS:ZIH CORP.;LASER BAND, LLC;ZEBRA ENTERPRISE SOLUTIONS CORP.;AND OTHERS;REEL/FRAME:034114/0270

Effective date: 20141027

AS Assignment

Owner name: SYMBOL TECHNOLOGIES, LLC, NEW YORK

Free format text: CHANGE OF NAME;ASSIGNOR:SYMBOL TECHNOLOGIES, INC.;REEL/FRAME:036083/0640

Effective date: 20150410

AS Assignment

Owner name: SYMBOL TECHNOLOGIES, INC., NEW YORK

Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:MORGAN STANLEY SENIOR FUNDING, INC.;REEL/FRAME:036371/0738

Effective date: 20150721