This section answers common questions about serial communications with FreeBSD. PPP and SLIP are covered in the Networking section.
As the FreeBSD kernel boots, it will probe for the serial ports in your system for which the kernel was configured. You can either watch your system closely for the messages it prints or run this command after your system is up and running:
% dmesg | grep -E "^sio[0-9]"
Here is some example output from the above command:
sio0: <16550A-compatible COM port> port 0x3f8-0x3ff irq 4 flags 0x10 on acpi0 sio0: type 16550A sio1: <16550A-compatible COM port> port 0x2f8-0x2ff irq 3 on acpi0 sio1: type 16550A
This shows two serial ports. The first is on IRQ 4, is using port address 0x3f8, and has a 16550A-type UART chip. The second uses the same kind of chip but is on IRQ 3 and is at port address 0x2f8. Internal modem cards are treated just like serial ports -- except that they always have a modem “attached” to the port.
The GENERIC kernel includes support for two serial ports using the same IRQ and port address settings in the above example. If these settings are not right for your system, or if you have added modem cards or have more serial ports than your kernel is configured for, just reconfigure your kernel. See section about building a kernel for more details.
The third serial port, sio2 (see sio(4), known as COM3 in DOS), is on /dev/cuad2 for dial-out devices, and on /dev/ttyd2 for dial-in devices. What is the difference between these two classes of devices?
You use ttydX for dial-ins. When opening /dev/ttydX in blocking mode, a process will wait for the corresponding cuadX device to become inactive, and then wait for the carrier detect line to go active. When you open the cuadX device, it makes sure the serial port is not already in use by the ttydX device. If the port is available, it “steals” it from the ttydX device. Also, the cuadX device does not care about carrier detect. With this scheme and an auto-answer modem, you can have remote users log in and you can still dial out with the same modem and the system will take care of all the conflicts.
Again, the section on kernel configuration provides information about configuring your kernel. For a multiport serial card, place an sio(4) line for each serial port on the card in the device.hints(5) file. But place the IRQ specifiers on only one of the entries. All of the ports on the card should share one IRQ. For consistency, use the last serial port to specify the IRQ. Also, specify the following option in the kernel configuration file:
options COM_MULTIPORT
The following /boot/device.hints example is for an AST 4-port serial card on IRQ 12:
hint.sio.4.at="isa" hint.sio.4.port="0x2a0" hint.sio.4.flags="0x701" hint.sio.5.at="isa" hint.sio.5.port="0x2a8" hint.sio.5.flags="0x701" hint.sio.6.at="isa" hint.sio.6.port="0x2b0" hint.sio.6.flags="0x701" hint.sio.7.at="isa" hint.sio.7.port="0x2b8" hint.sio.7.flags="0x701" hint.sio.7.irq="12"
The flags indicate that the master port has minor number 7 (0x700), and all the ports share an IRQ (0x001).
Not yet. You will have to use a different IRQ for each card.
See the Serial Communications section in the FreeBSD Handbook.
Please read the section about Dial-in Services in the FreeBSD Handbook.
You can find this information in the Terminals section of the FreeBSD Handbook.
On your system, the programs tip(1) and cu(1) can only access the /var/spool/lock directory via user uucp and group dialer. You can use the group dialer to control who has access to your modem or remote systems. Just add yourself to group dialer.
Alternatively, you can let everyone on your system run tip(1) and cu(1) by typing:
# chmod 4511 /usr/bin/cu # chmod 4511 /usr/bin/tip
See this answer in the FreeBSD Handbook.
See this answer in the FreeBSD Handbook.
See this answer in the FreeBSD Handbook.
See this answer in the FreeBSD Handbook.
See this answer in the FreeBSD Handbook.
See this answer in the FreeBSD Handbook.
See this answer in the FreeBSD Handbook.
See this answer in the FreeBSD Handbook.
See this answer in the FreeBSD Handbook.
See this answer in the FreeBSD Handbook.
See this answer in the FreeBSD Handbook.