mirror of
https://git.FreeBSD.org/src.git
synced 2024-12-25 11:37:56 +00:00
505 lines
22 KiB
Plaintext
505 lines
22 KiB
Plaintext
Hardware Documentation Guide: $Id: hardware.hlp,v 1.25 1997/03/12 18:58:25 joerg Exp $
|
|
|
|
Contents last changed: Jan 14th, 1997
|
|
|
|
Table of Contents
|
|
-----------------
|
|
0. Document Conventions
|
|
1. Default Configuration (GENERIC kernel)
|
|
2. Using UserConfig to change FreeBSD kernel settings
|
|
3. LINT - other possible configurations.
|
|
4. Known Hardware Problems.
|
|
|
|
=========================================================================
|
|
|
|
0. Document Conventions
|
|
-- --------------------
|
|
|
|
We have `underlined' text which represents user input with `-' symbols
|
|
throughout this document to differentiate it from the machine output.
|
|
|
|
1. Default (GENERIC) Configuration
|
|
-- -------------------------------
|
|
|
|
The following table contains a list of all of the devices that are
|
|
present in the GENERIC kernel, that being the kernel (the operating
|
|
system) that was placed in your root partition during the FreeBSD
|
|
installation process. A compressed version of the GENERIC kernel is
|
|
also used on the installation floppy diskette and DOS boot image.
|
|
|
|
The table describes the various parameters used by the driver to
|
|
communicate with the hardware in your system. There are four
|
|
parameters in the table, though not all are used by each and every
|
|
device.
|
|
|
|
Detail:
|
|
|
|
Port The starting I/O port used by the device, shown in hexadecimal.
|
|
|
|
IOMem The lowest (or starting) memory address used by the device,
|
|
also shown in hexadecimal.
|
|
|
|
IRQ The interrupt the device uses to alert the driver to an event,
|
|
given in decimal.
|
|
|
|
DRQ The DMA (direct memory access) channel the device uses to move
|
|
data to and from main memory, also given in decimal.
|
|
|
|
If an entry in the table has `n/a' for a value then it means that the
|
|
parameter in question does not apply to that device. A value of `dyn'
|
|
means that the correct value should be determined automatically by the
|
|
kernel when the system boots.
|
|
|
|
|
|
FreeBSD GENERIC kernel:
|
|
|
|
Port IRQ DRQ IOMem Description
|
|
---- --- --- ----- ---------------------------------
|
|
fdc0 3f0 6 2 n/a Floppy disk controller
|
|
wdc0 1f0 14 n/a n/a IDE/MFM/RLL disk controller
|
|
wdc1 170 15 n/a n/a IDE/MFM/RLL disk controller
|
|
|
|
ncr0 n/a n/a n/a n/a NCR PCI SCSI controller
|
|
bt0 330 dyn dyn dyn Buslogic SCSI controller
|
|
uha0 330 dyn 6 dyn Ultrastore 14f
|
|
aha0 330 dyn 5 dyn Adaptec 154x/1535 SCSI controller
|
|
ahb0 dyn dyn dyn dyn Adaptec 174x SCSI controller
|
|
ahc0 dyn dyn dyn dyn Adaptec 274x/284x/294x SCSI controller
|
|
aic0 340 11 dyn dyn Adaptec 152x/AIC-6360 SCSI
|
|
controller
|
|
amd0 n/a n/a n/a n/a Tekram DC-390(T) / AMD 53c974 PCI SCSI
|
|
nca0 1f88 10 dyn dyn ProAudioSpectrum cards
|
|
sea0 dyn 5 dyn c8000 Seagate ST01/02 8 bit controller
|
|
|
|
wt0 300 5 1 dyn Wangtek and Archive QIC-02/QIC-36
|
|
|
|
mse0 23c 5 n/a n/a Microsoft Bus Mouse
|
|
psm0 60 12 n/a n/a PS/2 Mouse (disabled by default)
|
|
|
|
mcd0 300 10 n/a n/a Mitsumi CD-ROM
|
|
matcd0 230 n/a n/a n/a Matsushita/Panasonic CD-ROM
|
|
scd0 230 n/a n/a n/a Sony CD-ROM
|
|
|
|
sio0 3f8 4 n/a n/a Serial Port 0 (COM1)
|
|
sio1 2f8 3 n/a n/a Serial Port 1 (COM2)
|
|
|
|
lpt0 dyn 7 n/a n/a Printer Port 0
|
|
lpt1 dyn dyn n/a n/a Printer Port 1
|
|
|
|
de0 n/a n/a n/a n/a DEC DC21x40 PCI based cards
|
|
(including 21140 100bT cards)
|
|
ed0 280 5 dyn d8000 WD & SMC 80xx; Novell NE1000 &
|
|
NE2000; 3Com 3C503; HP PC Lan+
|
|
ed1 300 5 dyn d8000 Same as ed0
|
|
eg0 310 5 dyn dyn 3Com 3C505
|
|
ep0 300 10 dyn dyn 3Com 3C509
|
|
ex0 dyn dyn dyn n/a Intel EtherExpress Pro/10 cards
|
|
fe0 300 dyn n/a n/a Allied-Telesis AT1700, RE2000 and
|
|
Fujitsu FMV-180 series cards.
|
|
fxp0 dyn dyn n/a dyn Intel EtherExpress Pro/100B
|
|
ie0 360 7 dyn d0000 AT&T StarLAN 10 and EN100;
|
|
3Com 3C507; NI5210
|
|
ix0 300 10 dyn d0000 Intel EtherExpress cards
|
|
ex0 dyn dyn dyn dyn Intel EtherExpress Pro/10 cards
|
|
le0 300 5 dyn d0000 Digital Equipment EtherWorks
|
|
2 and EtherWorks 3
|
|
lnc0 280 10 n/a dyn Lance/PCnet cards
|
|
(Isolan, Novell NE2100, NE32-VL)
|
|
vx0 dyn dyn n/a dyn 3Com 3c59x / 3c9xx
|
|
ze0 300 5 n/a d8000 IBM/National Semiconductor
|
|
PCMCIA Ethernet Controller
|
|
zp0 300 10 n/a d8000 3Com 3c589 Etherlink III
|
|
PCMCIA Ethernet Controller (NOT 3c589D!)
|
|
--- End of table ---
|
|
|
|
|
|
If the hardware in your computer is not set to the same settings as
|
|
those shown in the table and the item in conflict is not marked 'dyn',
|
|
you will have to either reconfigure your hardware or use UserConfig
|
|
to reconfigure the kernel to match the way your hardware is currently set
|
|
(see the next section).
|
|
|
|
If the settings do not match, the kernel may be unable to locate
|
|
or reliably access the devices in your system.
|
|
|
|
|
|
2. Using UserConfig to change FreeBSD kernel settings
|
|
-- --------------------------------------------------
|
|
|
|
The FreeBSD kernel on the install floppy contains drivers for every
|
|
piece of hardware that could conceivably be used to install the rest
|
|
of the system with. Unfortunately, PC hardware being what it is, some
|
|
of these devices can be difficult to detect accurately, and for some,
|
|
the process of detecting another can cause irreversible confusion.
|
|
|
|
To make this process easier, FreeBSD provides UserConfig. With this
|
|
UserConfig, the user can configure and disable device drivers before
|
|
the kernel is loaded, avoiding potential conflicts, and eliminating
|
|
the need to reconfigure hardware to suit the default driver settings.
|
|
|
|
Once FreeBSD is installed, it will remember the changes made using
|
|
UserConfig, so that they only need be made once.
|
|
|
|
It is important to disable drivers that are not relevant to a system
|
|
in order to minimize the possibility of interference, which can cause
|
|
problems that are difficult to track down.
|
|
|
|
UserConfig features a command line interface for users with serial
|
|
consoles or a need to type commands, and a full screen 'visual'
|
|
interface, which provides point-and-shoot configuration functionality.
|
|
|
|
Here is a sample UserConfig screen shot in 'visual' mode:
|
|
|
|
---Active Drivers---------------------------10 Conflicts------Dev---IRQ--Port--
|
|
Storage : (Collapsed)
|
|
Network :
|
|
NE1000,NE2000,3C503,WD/SMC80xx Ethernet adapters CONF ed0 5 0x280
|
|
NE1000,NE2000,3C503,WD/SMC80xx Ethernet adapters CONF ed1 5 0x300
|
|
Communications : (Collapsed)
|
|
Input : (Collapsed)
|
|
Multimedia :
|
|
---Inactive Drivers-------------------------------------------Dev--------------
|
|
Storage :
|
|
Network : (Collapsed)
|
|
Communications :
|
|
Input :
|
|
Multimedia :
|
|
PCI :
|
|
|
|
---Parameters-for-device-ed0---------------------------------------------------
|
|
Port address : 0x280 Memory address : 0xd8000
|
|
IRQ number : 5 Memory size : 0x2000
|
|
Flags : 0x0000
|
|
-------------------------------------------------------------------------------
|
|
IO Port address (Hexadecimal, 0x1-0x2000)
|
|
[TAB] Change fields [Q] Save device parameters
|
|
|
|
|
|
The screen is divided into four sections :
|
|
|
|
- Active Drivers. Listed here are the device drivers that are currently
|
|
enabled, and their basic parameters.
|
|
- Inactive Drivers. These drivers are present, but are disabled.
|
|
- Parameter edit field. This area is used for editing driver parameters.
|
|
- Help area. Keystroke help is displayed here.
|
|
|
|
One of the Active and Inactive lists is always in use, and the current
|
|
entry in the list will be shown with a highlight bar. If there are
|
|
more entries in a list than can be shown, it will scroll. The bar can
|
|
be moved up and down using the cursor keys, and moved between lists
|
|
with the TAB key.
|
|
|
|
Drivers in the Active list may be marked "CONF". This indicates that
|
|
one or more of their parameters conflicts with another device, and
|
|
indicates a potential for problems. The total number of conflicts is
|
|
displayed at the top of the screen.
|
|
|
|
As a general rule, conflicts should be avoided, either by disabling
|
|
conflicting devices that are not present in the system, or by altering
|
|
their configuration so that they match the installed hardware.
|
|
|
|
In the list areas, drivers are grouped by their basic function.
|
|
Groups can be 'Collapsed' to simplify the display (this is the default
|
|
state for all groups). If a group is collapsed, it will be shown with
|
|
'(Collapsed)' in the list, as above. To Expand a Collapsed group,
|
|
position the highlight bar over the group heading and press Enter. To
|
|
Collapse it again, repeat the process.
|
|
|
|
When a device driver in the Active list is highlighted, its full
|
|
parameters are displayed in the Parameter edit area. Note that not
|
|
all drivers use all possible parameters, and some hardware supported
|
|
by drivers may not use all the parameters the driver supports.
|
|
|
|
To disable a driver, go to the Active list, Expand the group it is in,
|
|
highlight the driver and press Del. The driver will move to its group
|
|
in the Inactive list. (If the group is collapsed or off the screen,
|
|
you may not see the driver in its new location.)
|
|
|
|
To enable a driver, go to the Inactive list, Expand the group it is
|
|
in, highlight the driver and press Enter. The highlight will move to
|
|
the Active list, and the driver you have just enabled will be
|
|
highlighted, ready to be configured.
|
|
|
|
To configure a driver, go to the Active list, Expand the group it is
|
|
in, highlight the driver and press Enter. The cursor will move to the
|
|
Parameter edit area, and the device's parameters may be edited.
|
|
|
|
While editing parameters, the TAB and cursor keys can be used to move
|
|
between fields. Most numeric values (except IRQ) are entered in
|
|
hexadecimal, as indicated by the '0x' at the beginning of the field.
|
|
The allowable values for a given field are show in the Key Help area
|
|
when the field is active.
|
|
|
|
To finish configuring a driver, press 'Q'.
|
|
|
|
Note that PCI and EISA devices can be probed reliably, therefore are
|
|
not shown in the table above, nor can be changed using UserConfig.
|
|
|
|
|
|
3. LINT - other possible configurations
|
|
-- ------------------------------------
|
|
|
|
The following drivers are not in the GENERIC kernel but remain
|
|
available to those who do not mind compiling a custom kernel (see
|
|
section 6 of FreeBSD.FAQ). The LINT configuration file
|
|
(/sys/i386/conf/LINT) also contains prototype entries for just about
|
|
every device supported by FreeBSD and is a good general reference.
|
|
|
|
The device names and a short description of each are listed below. The port
|
|
numbers, etc, are not meaningful here since you will need to compile a
|
|
custom kernel to gain access to these devices anyway and can thus
|
|
adjust the addresses to match the hardware in your computer in the process.
|
|
The LINT file contains prototype entries for all of the below which you
|
|
can easily cut-and-paste into your own file (or simply copy LINT and edit
|
|
it to taste):
|
|
|
|
ctx: Cortex-I frame grabber
|
|
cx: Cronyx/Sigma multiport sync/async
|
|
cy: Cyclades high-speed serial driver
|
|
el: 3Com 3C501
|
|
fea: DEV DEFEA EISA FDDI adater
|
|
fpa: DEC DEFPA PCI FDDI adapter
|
|
gp: National Instruments AT-GPIB and AT-GPIB/TNT board
|
|
gsc: Genius GS-4500 hand scanner
|
|
gus: Gravis Ultrasound - Ultrasound, Ultrasound 16, Ultrasound MAX
|
|
gusxvi: Gravis Ultrasound 16-bit PCM
|
|
joy: Joystick
|
|
labpc: National Instrument's Lab-PC and Lab-PC+
|
|
meteor: Matrox Meteor frame-grabber card
|
|
mpu: Roland MPU-401 stand-alone card
|
|
mse: Logitech & ATI InPort bus mouse ports
|
|
mss: Microsoft Sound System
|
|
opl: Yamaha OPL-2 and OPL-3 FM - SB, SB Pro, SB 16, ProAudioSpectrum
|
|
pas: ProAudioSpectrum PCM and MIDI
|
|
pca: PCM audio ("/dev/audio") through your PC speaker
|
|
psm: PS/2 mouse port
|
|
rc: RISCom/8 multiport card
|
|
sb: SoundBlaster PCM - SoundBlaster, SB Pro, SB16, ProAudioSpectrum
|
|
sbmidi: SoundBlaster 16 MIDI interface
|
|
sbxvi: SoundBlaster 16
|
|
spigot: Creative Labs Video Spigot video-acquisition board
|
|
uart: Stand-alone 6850 UART for MIDI
|
|
wds: Western Digital WD7000 IDE
|
|
|
|
--- end of list ---
|
|
|
|
|
|
4. Known Hardware Problems, Q & A:
|
|
-- -------------------------------
|
|
|
|
Q: mcd0 keeps thinking that it has found a device and this stops my Intel
|
|
EtherExpress card from working.
|
|
|
|
A: Use the UserConfig utility (see section 1.0) and disable the probing of
|
|
the mcd0 and mcd1 devices. Generally speaking, you should only leave
|
|
the devices that you will be using enabled in your kernel.
|
|
|
|
|
|
Q: FreeBSD claims to support the 3Com PCMCIA card, but my card isn't
|
|
recognized when it's plugged into my laptop.
|
|
|
|
A: There are a couple of possible problems. First of all, FreeBSD does
|
|
not support multi-function cards, so if you have a combo
|
|
ethernet/modem card, it won't work. Secondly, 3Com's most recent
|
|
version of the 3C589, the 'D' revision is not supported by the
|
|
GENERIC kernel. 3Com changed the card in a manner that we can no
|
|
longer support it in the default driver (* See below).
|
|
Assuming you have an older 3C589 card, then this card is
|
|
supported and will work in FreeBSD. The driver was written just like
|
|
all of the other drivers in FreeBSD, and depend on the card's own
|
|
configuration data stored in NVRAM to work. You must correctly
|
|
configure FreeBSD's driver to match the IRQ, port, and IOMEM stored
|
|
in NVRAM.
|
|
Unfortunately, the only program capable of reading them is the
|
|
3COM supplied DOS program. This program must be run on a absolutely
|
|
clean system (no other drivers must be running), and the program will
|
|
whine about CARD-Services not being found, but it will continue.
|
|
This is necessary to read the NVRAM values. You want to know the
|
|
IRQ, port, and IOMEM values (the latter is called the CIS tuple by
|
|
3COM). The first two can be set in the program, the third is
|
|
un-settable, and can only be read. Once you have these values, set
|
|
them in UserConfig and your card will be recognized.
|
|
|
|
* The D revision is supported in new PCMCIA generic code written for
|
|
FreeBSD, but there is little/no documentation written on how to set
|
|
it up yet. Hopefully in the next release of FreeBSD the new code
|
|
will be better supported, which will add support for almost all
|
|
PCMCIA cards.
|
|
|
|
Q: FreeBSD finds my PCMCIA network card, but no packets appear to
|
|
be sent even though it claims to be working.
|
|
|
|
A: Many PCMCIA cards have the ability to use either the 10-Base2 (BNC)
|
|
or 10-BaseT connectors for connecting to the network. The driver is
|
|
unable to 'auto-select' the correct connector, so you must tell it
|
|
which connector to use. In order to switch between the two
|
|
connectors, the link flags must be set. Depending on the model of
|
|
the card, '-link0 link1' or 'link0 -link1' will choose the correct
|
|
network connector. You can set these in sysinstall by using the
|
|
'Extra options to ifconfig:' field in the network setup screen.
|
|
|
|
|
|
Q: The system finds my ed network card, but I keep getting device
|
|
timeout errors.
|
|
|
|
A: Your card is probably on a different IRQ from what is specified in the
|
|
kernel configuration. The ed driver does not use the `soft' configuration
|
|
by default (values entered using EZSETUP in DOS), but it will use the
|
|
software configuration if you specify `?' in the IRQ field of your kernel
|
|
config file.
|
|
|
|
Either move the jumper on the card to a hard configuration setting
|
|
(altering the kernel settings if necessary), or specify the IRQ as
|
|
`-1' in UserConfig or `?' in your kernel config file. This will
|
|
tell the kernel to use the soft configuration.
|
|
|
|
Another possibility is that your card is at IRQ 9, which is shared
|
|
by IRQ 2 and frequently a cause of problems (especially when you
|
|
have a VGA card using IRQ 2! :). You should not use IRQ 2 or 9 if at
|
|
all possible.
|
|
|
|
|
|
Q: I go to boot from the hard disk for the first time after installing
|
|
FreeBSD, but the Boot Manager prompt just prints `F?' at the boot menu
|
|
each time but the boot won't go any further.
|
|
|
|
A: The hard disk geometry was set incorrectly in the Partition editor when
|
|
you installed FreeBSD. Go back into the partition editor and specify
|
|
the actual geometry of your hard disk. You must reinstall FreeBSD
|
|
again from the beginning with the correct geometry.
|
|
|
|
If you are failing entirely in figuring out the correct geometry for
|
|
your machine, here's a tip: Install a small DOS partition at the
|
|
beginning of the disk and install FreeBSD after that. The install
|
|
program will see the DOS partition and try to infer the correct
|
|
geometry from it, which usually works.
|
|
|
|
If you are setting up a truly dedicated FreeBSD server or work-
|
|
station where you don't care for (future) compatibility with DOS,
|
|
Linux or another operating system, you've also got the option to use
|
|
the entire disk (`A' in the partition editor), selecting the
|
|
non-standard option where FreeBSD occupies the entire disk from
|
|
the very first to the very last sector. This will leave all geometry
|
|
considerations aside, but is somewhat limiting unless you're never
|
|
going to run anything other than FreeBSD on a disk.
|
|
|
|
Q: I have a Matsushita/Panasonic drive but it isn't recognized by the
|
|
system.
|
|
|
|
A: Make certain that the I/O port that the matcd driver is set to is
|
|
correct for the host interface card you have. (Some SoundBlaster DOS
|
|
drivers report a hardware I/O port address for the CD-ROM interface
|
|
that is 0x10 lower than it really is.)
|
|
|
|
If you are unable to determine the settings for the card by examining
|
|
the board or documentation, you can use UserConfig to change the 'port'
|
|
address (I/O port) to -1 and start the system. This setting causes the
|
|
driver to look at a number of I/O ports that various manufacturers
|
|
use for their Matsushita/Panasonic/Creative CD-ROM interfaces.
|
|
Once the driver locates the address, you should run UserConfig again
|
|
and specify the correct address. Leaving the 'port' parameter set to -1
|
|
increases the amount of time that it takes the system to boot, and
|
|
this could interfere with other devices.
|
|
|
|
The double-speed Matsushita CR-562 and CR-563 are the only drives
|
|
that are supported.
|
|
|
|
|
|
Q: I booted the install floppy on my IBM ThinkPad (tm) laptop, and the
|
|
keyboard is all messed up.
|
|
|
|
A: Older IBM laptops use a non-standard keyboard controller, so you must
|
|
tell the console driver (sc0) to go into a special mode which works
|
|
on the ThinkPads. Change the sc0 'Flags' to 0x10 in UserConfig and
|
|
it should work fine. (Look in the Input Menu for 'Syscons Console
|
|
Driver'.)
|
|
|
|
|
|
Q: I have a Matsushita/Panasonic CR-522, a Matsushita/Panasonic CR-523 or
|
|
a TEAC CD55a drive, but it is not recognized even when the correct I/O
|
|
port is set.
|
|
|
|
A: These CD-ROM drives are currently not supported by FreeBSD. The command
|
|
sets for these drives are not compatible with the double-speed CR-562
|
|
and CR-563 drives.
|
|
|
|
The single-speed CR-522 and CR-523 drives can be identified by their
|
|
use of a CD-caddy.
|
|
|
|
|
|
Q: I'm trying to install from a tape drive but all I get is something like:
|
|
st0(aha0:1:0) NOT READY csi 40,0,0,0
|
|
on the screen. Help!
|
|
|
|
A: There's a limitation in the current sysinstall that the tape MUST
|
|
be in the drive while sysinstall is started or it won't be detected.
|
|
Try again with the tape in the drive the whole time.
|
|
|
|
|
|
Q: I've installed FreeBSD onto my system, but it hangs when booting from
|
|
the hard drive with the message: ``Changing root to /dev/sd0a''.
|
|
|
|
A: This problem may occur in a system with a 3com 3c509 Ethernet adaptor.
|
|
The ep0 device driver appears to be sensitive to probes for other
|
|
devices that also use address 0x300. Boot your FreeBSD system by power
|
|
cycling the machine (turn off and on). At the ``Boot:'' prompt specify
|
|
the ``-c''. This will invoke UserConfig (see Section 1. above). Use
|
|
the ``disable'' command to disable the device probes for all devices
|
|
at address 0x300 except the ep0 driver. On exit, your machine should
|
|
successfully boot FreeBSD.
|
|
|
|
|
|
Q: My system hangs during boot, right after the "fd0: [my floppy drive]"
|
|
line.
|
|
|
|
A: This is not actually a hang, simply a very LONG "wdc0" probe that
|
|
often takes a long time to complete on certain systems (where there
|
|
usually _isn't_ a WD controller). Be patient, your system will boot!
|
|
To eliminate the problem, boot with the -c flag and eliminate the wdc0
|
|
device, or compile a custom kernel.
|
|
|
|
|
|
Q: My system can not find my Intel EtherExpress 16 card.
|
|
|
|
A: You must set your Intel EtherExpress 16 card to be memory mapped at
|
|
address 0xD0000, and set the amount of mapped memory to 32K using
|
|
the Intel supplied softset.exe program.
|
|
|
|
|
|
Q: When installing on an EISA HP Netserver, my on-board AIC-7xxx
|
|
SCSI controller isn't detected.
|
|
|
|
A: This is a known problem, and will hopefully be fixed in the future.
|
|
In order to get your system installed at all, boot with the -c
|
|
option into UserConfig, but _don't_ use the pretty visual mode but
|
|
the plain old CLI mode. Type
|
|
|
|
eisa 12
|
|
quit
|
|
|
|
there at the prompt. (Instead of `quit', you might also type
|
|
`visual', and continue the rest of the configuration session in
|
|
visual mode.) While it's recommended to compile a custom kernel,
|
|
dset(8) now also understands to save this value.
|
|
|
|
Refer to the FAQ topic 3.16 for an explanation of the problem, and
|
|
for how to continue. Remember that you can find the FAQ on your
|
|
local system in /usr/share/doc/FAQ, provided you have installed the
|
|
`doc' distribution.
|
|
|
|
|
|
Q: I have this CMD640 IDE controller that is said to be broken.
|
|
|
|
A: Yes, it is. There's a workaround available now, but it's not yet
|
|
enabled by default in FreeBSD 2.2. In order to install your system
|
|
using this controller, you need to make sure that you are only
|
|
using drives on one of its channels. Don't forget about your ATAPI
|
|
CD-ROM drive! It must be the second drive on the primary channel
|
|
if you are going to install from it onto an IDE disk.
|
|
|
|
Once your system is installed, rebuild your kernel with the option
|
|
CMD640. Refer to the FAQ and handbook for more detailed information.
|
|
|
|
[ Please add more hardware tips to this Q&A section! ]
|
|
|