NAME
adb —
Apple Desktop Bus driver
SYNOPSIS
adb* at obio?
options MRG_ADB
#include <machine/adbsys.h>
DESCRIPTION
The Apple Desktop Bus (ADB) is the single-master, multiple-slave, low-speed
serial bus interface used by Macintosh computers to connect input devices such
as keyboards, mice, trackpads, trackballs, and graphics tablets to the
machine.
NetBSD provides support for the Apple Desktop
Bus as found on all supported mac68k models, as well as macppc models with
on-board ADB (PowerBooks and “Old World” models).
The
adb driver accesses the ADB controller using the so-called
“HWDIRECT” method. This method of access bypasses the Macintosh
ROM and uses only
NetBSD routines for ADB access. This
is the only method supported on macppc and is the default for mac68k systems.
On mac68k systems there is an alternate method of accessing the ADB controller.
With the Macintosh ROM Glue (MRG) method, the routines written for MacOS are
used. To enable this method of ADB access, uncomment the line:
options MRG_ADB
in your kernel configuration file.
The
ioctl(2) call is used to
control the ADB event device. The following is a list of available
ioctl(2) commands:
-
-
ADBIOC_DEVSINFO
- Get ADB Device Info
The adb event device will return an array of information
containing an entry for each device connected to the bus. Each entry
contains the current address, default address, and handler ID for the
corresponding ADB device.
-
-
ADBIOC_GETREPEAT
- Get Keyboard Repeat Info
Returns a structure containing the current keyboard repeat delay and
keyboard repeat interval.
-
-
ADBIOC_SETREPEAT
- Set Keyboard Repeat Rate
Sets the keyboard repeat delay and interval to the values specified by
argp.
-
-
ADBIOC_RESET
- ADB Reset
Perform a reset of the ADB which will reinitialize all of the devices
attached to the bus.
-
-
ADBIOC_LISTENCMD
- ADB Listen Command
Send data to the register of the ADB device specified by
argp. This command is not fully implemented at this
time.
SUPPORTED DEVICES
NetBSD includes support for the following ADB devices,
sorted by driver name:
-
-
- abtn
- ADB mouse button?
-
-
- aed
- ADB event device
-
-
- akbd
- ADB keyboard
-
-
- ams
- ADB mouse
-
-
- apm
- APM emulation
FILES
- /dev/adb
- The ADB event device.
DIAGNOSTICS
- aed0 at adb0 addr 0: ADB Event
device
- This is a normal autoconfiguration message noting the
presence of the adb event device.
- adb0 at obio0 offset 0x16000 irq 18: 2
targets
- A standard autoconfiguration message indicating the
initialization of the ADB subsystem.
- adb: no devices found.
- No ADB devices were found to be connected to the bus
during autoconfiguration.
- adb: using %s series hardware
support.
- Indicates the class of ADB hardware support the machine
uses.
- adb: hardware type unknown for this
machine.
- The ADB hardware in this machine is currently
unsupported.
- adb: no ROM ADB driver in this kernel
for this machine.
- The kernel lacks the necessary Macintosh ROM Glue (MRG)
support for accessing the ADB hardware on this machine.
- adb: using serial console.
- A serial console will be used for user input rather than
the ADB event device.
- adb: %s at %d.
- An ADB device of the type specified by
%s has been found at location %d.
SEE ALSO
aed(4),
akbd(4),
ams(4),
apm(4)
HISTORY
The
adb interface first appeared in
NetBSD
0.9. It has been under development ever since.
AUTHORS
Bradley A. Grantham wrote the original
adb driver, including the MRG support. The hardware direct
interface was written by
John P. Wittkowski. The
PowerManager interface was written by
Takashi Hamada.
BUGS
- Not every class of ADB hardware is supported yet.
- The talk command is currently unimplemented.
- The listen command is not implemented yet.
- Not all multi-button mice are currently supported.
- Only mapped and relative-position ADB devices (i.e.
keyboards and mice) are supported. Thus absolute-position and other exotic
devices will not work.
- Some of the diagnostic messages in this man page need to
be updated.
Some mac68k machines contain so-called dirty ROM. These machines are the: Mac
SE/30, Mac II, Mac IIx, and Mac IIcx. Machines with dirty ROM may experience
trouble booting if the MRG code is used, especially under the following
conditions:
- Both a keyboard and a mouse
are not attached to the computer.
- An extended keyboard is
attached to the computer.
On (some) machines with dirty ROM, the ROM indicates the presence of a
“ghost” keyboard or mouse. When this nonexistent device is probed
for, the result is an infinite loop. This is believed to be triggered by the
adb driver probing for extended mice, and non-EMP Logitech
mice.