		   -------------------------------
			       PAO-FAQ
		   -------------------------------
			   Tatsumi Hosokawa
			BSD-nomads Team, Japan
		       hosokawa@jp.FreeBSD.org

PAO is comprehensive package for mobile-computing users of FreeBSD.
PAO contains FreeBSD PC-card drivers, enhancements of FreeBSD APM
driver, and other miscellaneous utilities and daemons.  PAO is based
on Andrew McRae's early work on FreeBSD PCMCIA driver, and Tatsumi
Hosokawa's FreeBSD APM driver, and it is now developed and managed by
BSD-nomads team and Nate Williams.

* What does PAO stand for?

	PAO *stands* for nomads :-).

* What cards does PAO supports?

	Please read SUPPORTED.CARDS in the package.

* What laptops does PAO supports?

	APM driver of PAO supports APM BIOS 1.0 and APM BIOS 1.1.  APM
	BIOS sometimes has many serious bugs.  We're trying to cope
	with these bugs, but we gave up supporting some broken APM
	BIOS'es.  Some laptop vendors announced that they have updated
	their BIOS'es 'for Windows 95'.  It probably means that 'they
	fixed bugs on APM protected mode interface.'  So, if the
	vendor of your laptop has announced newer BIOS'es, please
	update it to the latest one before installing PAO.

	PC-card driver of PAO supports following PC-card controllers.

		Intel i82365SL (and compatibles)
		Cirrus Logic PD-6710
		Cirrus Logic PD-6720
		Cirrus Logic PD-6722
		Cirrus Logic PD-6729 (PCI-PCMCIA bridge)
		IBM PCIC (on some ThinkPads)
		IBM KING
		Vadem 468
		Vadem 469
		Ricoh RF5C396
		VLSI 82C146

	PAO does not support following PC-card controllers.  If you
	have laptops with these controller, please write drivers of
	these controllers for PAO :-).

		Databook TCIC (on some ancient laptops)
		Any PCI-CardBus Bridges
		ZV-port controller

* How can I install FreeBSD via PC-cards PAO supports.

	Use PAO installation floppy.  It's available at
	"ftp://ryukyu.mt.cs.keio.ac.jp/pub/FreeBSD/PAO-flp/" (tar +
	gzipped).  Unzipped floppy images (paoboot.flp, paofixit.flp)
	are also found at its subdirectories.

* What does APM stand for?

	Microsoft and Intel's "Advanced Power Management".  Please
	read http://www.intel.com/IAL/powermgm/powermgm.html for
	details.

* How to configure the variables in /etc/sysconfig?

	1. apm_enable

		If this variable set to YES, you can use /dev/apm
		application interface, and kernel can handle APM
		events (default: NO).

	2. pccard_enable

		If this variable set to YES, PC-card manager daemon
		starts at bootstrap (default: NO).

	3. pccard_mem

		If you want to use scratch memory for PCIC other than
		DEFAULT (0xd0000), set this variable explicitly
		(default: DEFAULT).

	4. pccard_beep

		If pccard_beep is set to 0, insertion and removal of
		PC-cards is set to silent mode.  If it is set to 1 or
		2, the machine beep's when the card is inserted or
		removed.  1 and 2 correspond to simple beep mode and
		melody mode respectively (default: 2).

	5. pccard_ether

		List all ethernet interfaces configured in your kernel.
		For example, if you use LEINLEIN as the config file,
		appropriate value of this variable is
			    pccard_ether="ed0 ep0 fe0 sn0"
		(default: NO).

	6. ifconfig_"interface name"

		Set arguments for ifconfig corresponding to all
		interfaces listed in "pccard_ether".  If this variable
		set to "DHCP", DHCP (Dynamic Host Configuration
		Protocol) clients is automatically executed for
		correspoinding interface.  If you want to use "DHCP",
		you must install WIDE-DHCP package in ports/packages
		collection and configure BPF (Berkeley Packet Filter)
		in your kernel (LEINLEIN has this definition).  And,
		don't forget to MAKEDEV bpf? devices.

		(example 1)
			pccard_ether="ed0 ep0 fe0 sn0"
			ifconfig_common="10.0.0.1 netmask 0xffffff00"
			ifconfig_ed0=$ifconfig_common
			ifconfig_ep0=$ifconfig_common
			ifconfig_fe0=$ifconfig_common
			ifconfig_sn0=$ifconfig_common

		(example 2)
			pccard_ether="ed0 nep0 fe0 sn0"
			ifconfig_common="DHCP"
			ifconfig_ed0=$ifconfig_common
			ifconfig_ep0=$ifconfig_common
			ifconfig_fe0=$ifconfig_common
			ifconfig_sn0=$ifconfig_common

	7. defaultrouter

		If you set this variable, default router is
		automatically registered into the routing table when
		you inserted the card, and automatically deleted from
		routing table when you removed the card.  This
		variable is ignored when the ifconfig parameter of
		corresponding interface is set to "DHCP". (default:
		NO)

* Kernel boot message says that my card is not probed.  Why?

	No problem.  Kernel can't find your card without pccardd
	daemon, and card database stored in /etc/pccard.conf.
	PC-cards are not probed at bootstrap.  It will found and
	registerd by pccardd later.

* Removing a card freezes the machine.  How can I ward off this
  trouble.

	On current version, hot removal of some particular serial
	cards (or on paticular machines?) is still unstable.  Using 'xpccard'
	(in utils/ subdirectory of this package) or 'power' subcommand
	of 'pccardc', and hybernate the card first, you would remove
	these cards safely.

* I'm using IBM ThinkPad 3xx series and I want to install FreeBSD, but
  FreeBSD keyboard driver can't handle keyboard correctly.  So I can't
  install FreeBSD.  Why?

	That's because these machines uses XT-compatible keyboards.
	This package patches syscons so that we can enable
	XT-compatible mode from UserConfig.  Boot from
	PAO-installation floppy with "kernel -c" option and type 

		flags sc0 8

	at UserConfig prompt.  This enables XT-compatible keyboard
	mode of syscons driver.  Once you could install FreeBSD, you
	can replace kernel with fixit.flp.  Replace the kernel with
	PAO-generic kernel binary available at
	"ftp://ryukyu.mt.cs.keio.ac.jp/pub/FreeBSD/PAO-kernel/".  This
	kernel can also enable XT-keyboard from UserConfig.

* I installed PAO on my machine, but the machine frequently reports
  that card is inserted or removed even though no cards are attatched
  to the machine.   Why?

	Maybe your machine has built-in devices which does not probed
	and attatched by FreeBSD (for example, unsupported built-in
	sound card).  If you can disable such devices from BIOS setup
	screen, please disable it and test it again.

	If the problem does not happen again, it's IRQ confilict
	between PC-card controller and built-in unsupported devices
	that caused the trouble.

	We can explicitly specify the PC-card controller's IRQ with
	PCIC_IRQ option of config file, like,

	options "PCIC_IRQ=7"

	Please note that:

	1. If you can disable printer parallel port from BIOS setup,
	   you can make IRQ 7 be free.

	2. If you can disable COM2 from BIOS setup, you can make IRQ 3
	   be free.  Generally, you can't use serial mouse if you
	   disable COM2.

	3. If you can disable COM1 from BIOS setup, you can make IRQ 4
	   be free.

	4. If your machine has no PS/2 mouse or PS/2-compatible
	   trackball/trackpad, you can use IRQ 12 freely.

* I installed PAO on my machine, but it does not report the
  insertion/removal of cards.  Why?

	Maybe the same reason as last question.  Use PCIC_IRQ option.

* When I insert cards, system says only "CIS code read: Cannot
  allocate memory".  Why?

	Maybe you forgot to enable "pccard_enable" parameter in
	/etc/sysconfig.

* My laptop says "Slot ?, unfielded interrupt (?)".  Why?

	No problem.  Don't mind :-).

* How can I plug two network cards into a laptop and use it as a
  gateway?

	If you want to use two network cards correspond to different
	drivers respectively (for example, Ethernet and Modem, or IBM
	Ethernet card and 3Com Ethernet card), no special
	configuration is needed.

	If you want to use two same cards (for example, two IBMp
	Ethernet cards), or two different cards correspond to same
	drivers (for example, IBM Ethernet card and Accton Ethernet
	card), you must modify /etc/pccard.conf.

	(example 1) two IBM PCMCIA Ethernet cards:

	At first, you must configure "ed0" and "ed1" both.  By
	default, LEINLEIN configuration file defines "ed1" as
	"disabled" state.  So, if you have not modified LEINLEIN, type
	simply "enable ed1" from "kernel -c" prompt.  Otherwise, edit
	config file, enable "ed1", rebuild the kernel, and install it.

	Next, you must define "config" line in /etc/pccard.conf
	correspond to second IBM card.  A "card" definition can have
	more than two "config" lines.  For example, if you configure
	IBM cards as

	card "IBM Corp\." "Ethernet"
		config	default "ed0" any
		config	default "ed1" any
		ether	0xff0 08:00:5a 00:04:ac
		insert	echo IBM PCMCIA Ethernet inserted
		insert	/etc/pccard_ether $device
		remove	echo IBM PCMCIA Ethernet removed
		remove	/etc/pccard_ether_remove $device

	you can use second IBM cards.  Resources are allocated without
	confilicts automatically.  If you want to use the cards that
	specifies config index and IRQ explicitly (i.e. not by
	"default" or "any" keyword), you must manually choose other
	indices or IRQ that does not conflict with each other.

	(example 2) IBM Ethernet card and Accton Ethernet card

	You must configure one card as "ed0" and the other as "ed1".
	Following example uses IBM card as "ed0" and Accton card as
	"ed1".

	card "IBM Corp\." "Ethernet"
		config	default "ed0" any
		ether	0xff0 08:00:5a 00:04:ac
		insert	echo IBM PCMCIA Ethernet inserted
		insert	/etc/pccard_ether $device
		remove	echo IBM PCMCIA Ethernet removed
		remove	/etc/pccard_ether_remove $device

	card "ACCTON" "EN2212"
		config	default "ed1" any 0x30
		ether	0xff0 00:00:e8
		insert	echo Accton EN2212 inserted
		insert	/etc/pccard_ether $device
		remove	echo Accton EN2212 removed
		remove	/etc/pccard_ether_remove $device

	If the card uses explicit config index specification, same
	problem as "example 1" may happen.

	We're trying to solve the problem related to explicit config
	index specification.  Please wait for the future releases.

* "Gated" does not work on PAO system.  Why?

	That's because gated does not support "dynamic interface
	emergence" that PAO provides.

* How to mount Flash ATA disk?

	I think that most popular purpose of Flash ATA disk for
	FreeBSD laptop user, is to share files between FreeBSD machine
	and MS-DOS palmtops like HP-200LX.  For example, MS-DOS
	filesystem of HP-200LX is usually placed at the first fdisk
	partition of Flash ATA disk. So, if you mount this partision
	(this example assumes Flash ATA disk controller was attatched
	as "wdc1" and Flash ATA disk is attached as "wd1", as defined
	in LEINLEIN and pccard.conf.sample), type

		# mount -t msdos /dev/wd1s1 /mnt

	If you want to do it more easily, make directory /flash for
	this purpose, and add a line like

	/dev/wd1s1         /flash        msdos   rw,noauto 0 0

	into your /etc/fstab (don't forget to add "noauto" option).
	You can mount this partition by simply typing

		# mount /flash

	Don't forget to umount filesystem before removing the cards.

	If you have digital still cameras that support Flash ATA
	cards, you can read image data captured by these cameras.
	Especially, if the camera supports MS-DOS formatted Flash ATA
	disks or ATA HDDs, you can view captured images, as long as
	the image file format is supported by the graphic viewer on
	FreeBSD.  For example Ricoh DC-2 writes *.j6i and *.j6s files
	on MS-DOS root directory in the first fdisk slice of Flash ATA
	cards.  The manual says that *.j6i format is "based on JPEG
	compression", but, in fact, if you truncate the first 172
	bytes from *.j6i format, the remainder is standard JPEG
	format.  For example, when the name of j6i file is
	"/flash/r010001.j6i", you can view this image with xv by,

		% dd if=/flash/r010001.j6i of=foo.jpg skip=1 bs=172
		% xv foo.jpg

	Please note that you must adjust aspect ratio.  You can do it
	with cjpeg/djpeg and netpbm package.

* How to mount SCSI CD-ROM?

	Same as desktops.

		# mount -t cd9660 /dev/cd0a /cdrom

	If you add this line

	/dev/cd0a         /cdrom          cd9660  rw,noauto 0 0

	to /etc/fstab, you can mount SCSI CD-ROM by simply typing

		# mount /cdrom

	Don't forget to umount filesystem before removing the cards.

* How to mount SCSI HDD?

	Same as desktops :-).

* Kernel says that my modem is attached as "sio2", but there are no
  /dev/sio2.  Why?

	Use /dev/ttyd2 or /dev/cuaa2 instead (same as desktops).

* This kernel hangs up when it probes APM BIOS.  Why?

	Some implementations of protected mode APM BIOS has serious
	bugs.  At first, confirm that your laptop has the latest BIOS.
	These days, BIOS'es of many laptops has been updated to fix
	these bugs of protected mode APM BIOS because Windows 95 uses
	it.  If the BIOS is not latest one, update it soon.  Even if
	the BIOS is the latest one, you can "cope with" these problems
	by modifying the kernel source.  If you're a hacker, try to
	solve your problem by adding a new entry in
	/usr/src/sys/i386/include/laptops.h corresponding to your
	machine, and try to solve this problem.  If your problem is
	solved, please send us a report about your solution (and of
	course your environment).  If you're not hacker, boot the
	kernel with "kernel -c" and type simply "disable apm0" :-).

* Failed to probe (or probed correctly, but behaves unstable) PCMCIA
  FAX/Modem cards (or other serial cards).  Why?

	Read "function serial" definition in /etc/pccard.conf and try
	alternative definitions.

* I tried to change IRQ and I/O address of PCMCIA cards by using
  "kernel -c", but it has no effect.  Why?

	"kernel -c" and arguments of "device" and "controller"
	definitions in config file (except the definitions of
	"xxxintr") have no effect to PCMCIA cards.  If you want to
	modify these parameters, edit /etc/pccard.conf.

* Failed to use NE-2000 compatible Ethernet cards while the entries of
  /etc/pccard.conf seems to be correct.  Why?

	Some NE-2000 compatible Ethernet card has weired CIS tupples
	about the description of shared memory address (Accton
	EN-2212, etc.). Adding flags 0x10 at the corresponding entry
	of /etc/pccard.conf.  It diables the use of shared memory and
	force the driver to work in program I/O mode.

     card "PCMCIA" "UE2212"
	     config  default "ed0" any 0x10
	     ether   0xff0 00:00:e8

* My X-Jack Ethernet card can't communicate with other machines in my
  local network.  Why?

	Some people reported that X-Jack Ethernet has such problem,
	but it is not problem with FreeBSD X-Jack Ethernet driver.
	This problem happens under Linux, and even under DOS and
	Windows.  X-Jack Ethernet is incompatible with some particular
	HUBs.  I and some Linux users surveyed this problem.

	Incompatible HUBs:
		Alleid Telesis	CentreCOM MR820TR
		OMRON		LT-HB 8
		TDK		CME-1210A
		TDK		CME-1230

	Compatible HUBs:
		Accton		EtherHub-8sa
                Alleid Telesis	CentreCOM MR-815T
		ASANTE		10T Hub/8
		CONTEC		RT-1008E (Ethernet Repeater)
		D-Link		Hubby
		DEC		small 4 port HUB (unknown type name)
		HP		expensive :-) HUB (unknown type name)
		Melco		LHB-S8 (Stackable 8-ports Hub)
		Planet		EH-500
		Planet		another 5 port HUB (older than EH-500)
		Unknown		EN-800 (8 ports)

* I can't use WaveLAN at all.  Why?

	WaveLAN driver is provided for 2.2-SNAP only.  If you're using
	2.1.5-RELEASE, you can't use WaveLAN.  Even if you're using
	2.2-SNAP, you must specify -DWAVELAN as the argument of cc
	when you compile pccardd.  Read Makefile of pccardd for
	details.

* My WaveLAN card is probed correctly, but I can't use it.

	You must initialize WaveLAN card from DOS utilities before
	using it.  Especially, you must set the same NetID on all
	WaveLAN cards (and of course WavePoint) you want to
	communicate with.  And, please note that roaming protocol is
	not supported yet.

	Moreover, there's another problem with this card.  WaveLAN
	PCMCIA US version uses 915MHz band, but Japanese version uses
	2.4GHz band (because of legal reason).  Current wlp driver can
	drive only WaveLAN US version (I don't know the exact reason).
	So, If you're living in Japan, you can't use WaveLAN cards
	LEGALLY :-) under FreeBSD.  Sorry.

* My laptop uses I/O address 0x240 for another device, but I can't
  change I/O address even though I modified corresponding device
  declarations in config file.  How can I change I/O ports?

	Value of I/O address in config file is "dummy".  If the card
	is allocated I/O ports from I/O pool, please modify following
	line (corresponding to I/O pool definition) of
	/etc/pccard.conf.

	io	0x240-0x2e0 0x300-0x360

	For example, modify it as

	io	0x300-0x360

	it won't use 0x240-0x2e0.  If the card is allocated I/O ports
	according to their CIS tupples, change config index number
	(see "config" declaration in /etc/pccard.conf) to other
	indices.  For example, Ratoc REX-5588 Ethernet card has
	following tupples (dumped by "pccardc dumpcis").

--------------------------------------------------------------------------
Tuple #16, code = 0x1b (Configuration entry), length = 8
    000:  08 08 ea 60 00 01 1f ff
	Config index = 0x8
	Card decodes 10 address lines, full 8/16 Bit I/O
		I/O address # 1: block start = 0x100 block length = 0x20
Tuple #17, code = 0x1b (Configuration entry), length = 8
    000:  09 08 ea 60 20 01 1f ff
	Config index = 0x9
	Card decodes 10 address lines, full 8/16 Bit I/O
		I/O address # 1: block start = 0x120 block length = 0x20
Tuple #18, code = 0x1b (Configuration entry), length = 8
    000:  0a 08 ea 60 40 01 1f ff
	Config index = 0xa
	Card decodes 10 address lines, full 8/16 Bit I/O
		I/O address # 1: block start = 0x140 block length = 0x20
Tuple #19, code = 0x1b (Configuration entry), length = 8
    000:  0b 08 ea 60 60 01 1f ff
	Config index = 0xb
	Card decodes 10 address lines, full 8/16 Bit I/O
		I/O address # 1: block start = 0x160 block length = 0x20
Tuple #20, code = 0x1b (Configuration entry), length = 8
    000:  0c 08 ea 60 80 01 1f ff
	Config index = 0xc
	Card decodes 10 address lines, full 8/16 Bit I/O
		I/O address # 1: block start = 0x180 block length = 0x20

		    ..........repeats............

Tuple #39, code = 0x1b (Configuration entry), length = 8
    000:  1f 08 ea 60 e0 03 1f ff
	Config index = 0x1f
	Card decodes 10 address lines, full 8/16 Bit I/O
		I/O address # 1: block start = 0x3e0 block length = 0x20
--------------------------------------------------------------------------

	This card specifies I/O address explicitly.  For example, if
	you use config index 0xc, I/O address 0x180 is used.  If you
	want to use 0x3e0 as I/O address, you must specify 0x1f as
	config index.  I'm planning to extend pccardd to treat such
	cards automatically, but you must specify config index
	manually with current version of our PC-card package.

* My laptop uses IRQ 10 for another device, but I can't change IRQ
  even though I modified correspondig "device" declaration in config
  file.  How can I change IRQ?

	If the corresponding entries in /etc/pccard.conf specifies IRQ
	explicitly, modify that value.  For example,

	card "PCMCIA LAN MBH10304  ES" "  01"
		config	0x1a "fe0" 5
		ether	0x32c 00:c0:d0

	this entry uses IRQ 5 explicitly.  If you want to use IRQ 7
	for this card, modify "config" declaration as

		config	0x1a "fe0" 7

	If the entry uses dynamic IRQ allocation ("any" for IRQ), the
	IRQ is allocated from free IRQ pool.  Free IRQ pool is defined
	at "irq" declaration of /etc/pccard.conf.  By default, 

	irq	10 11

	is defined as the free IRQ pool.  If your machine uses IRQ 10
	or IRQ 11 for other devices, modify this list.  You must
	Declare free IRQs more than the number of slots.  (So, if your
	machine has four PC-card slots, you must prepare more than
	four free IRQs!)

* How can I use Xircom's card?

	Don't ask me.  Ask Xircom instead :-).
