NAME
adb
- Apple Desktop Bus driver
SYNOPSIS
adb* at obio?
options MRG_ADB
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
NetBSD0.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 non-existant 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.