Serial console problems with stable/8
olli at lurza.secnetix.de
Mon Sep 13 12:50:06 UTC 2010
Jeremy Chadwick wrote:
> On Mon, Sep 13, 2010 at 09:21:21AM +0200, Oliver Fromme wrote:
> > Jeremy Chadwick wrote:
> > > Is there a PS/2 keyboard hooked up to this machine when you're
> > > attempting to get serial console output?
> > Kind of. It's connected to a local KVM switch.
> Does the KVM switch provide power to a PS/2 port which isn't currently
> selected? (E.g. on an A/B/C/D KVM switch, if the FreeBSD box is wired
> to port A, and the KVM switch has port C selected, does port A still get
> power?) Some KVMs do this, others do not.
Yes, it does.
Now I get your point ... Yes, -P does probe the keyboard
first. That's probably why I see the boot0/boot2 on the
VGA console, not on the serial port. As far as I know,
/boot.config is read by the boot0/boot2 stage, not by
Anyway, I don't care too much for boot0/boot2; I've never
had to interact with them on that machine. The important
thing for me is that loader(8) and the kernel use the
serial port for the console, and that I can login on it
(i.e. there must be a getty running). All of that seemed
to be accomplished with the console="comconsole" entry in
/boot/loader.conf ... At least it worked when I first
installed that machine in September 2000 (yeah, exactly 10
years ago) with FreeBSD 4.1, then updated it roughly every
two years ... And it stopped working in 8.x.
I will try your suggestion of replacing -P with -Dh,
next time I'm at the site (probably Friday). It's too
risky to try that remotely, given that I had to press
the hard reset button several times yesterday during my
attempts of getting the serial console to work as it
should. Fortunately the machine has a small disk, so
fsck finishes in only two or three minutes ...
However, I fear that it won't improve things. I don't see
how it could change the symptoms I'm seeing. The serial
console _is_ activated (through the loader.conf entry),
but it just doesn't work correctly.
> > the boot.config(5) manpage is in urgent need of a fix.
> > Quote:
> > > The command:
> > >
> > > # echo "-P" > /boot.config
> > >
> > > will activate the serial console of FreeBSD.
> That's a highly misleading description, and should probably be removed.
> It's better to read boot(8).
I did have exactly the settings listed in section 26.6.2:
console="comconsole" in loader.conf and the getty turned
on in /etc/ttys.
And specifically, section 22.214.171.124 states:
| You can easily specify the boot loader and the kernel
| to use the serial console by writing just one line in
| set console="comconsole"
| This will take effect regardless of the settings in the
| boot block discussed in the previous section.
So, it's pretty much irrelevant whether I have -P or -Dh or
anything else (or nothing at all) in /boot.config.
> You'll find that FreeBSD does not offer a "true" dual console setup.
> DragonflyBSD does offer this.
True. I'm aware of that. I don't need dual console.
> > Also, with that flag it has worked fine for ages, until
> > I updated to 8.1-stable. There must be a regression
> > somewhere.
> I don't know if the regression is with PS/2 keyboard probing or with the
> introduction of uart(4) as the default serial port driver. I'm CC'ing
> ed@ since he's worked heavily on uart(4) and can assist here.
I'm guessing it is uart's fault, but I haven't dug deeply
enough to be certain.
> > BTW, the interesting thing is that all processes that try to access
> > the console hang in "ttydcd". I'm not familiar with the tty code ...
> > Does anyone have an idea what this means?
> I imagine it means the tty driver (thus uart(4)) is waiting for the DCD
> line on the serial port to either go low or high (not sure which), but I
> could be completely wrong.
> One more thing to try: can you replace "std.9600" in your /etc/ttys
> with "3wire.9600" and then do "init q" and see if things improve? This
> should remove carrier detection (DCD) from the mix.
That sounds like a very good suggestion! Will try that.
> If using 3wire.9600 works, can you provide a description of the wiring
> of your serial console setup? Specifically what DB9 pin is connected to
> what on the remote end, and what the remote end actually is (Xyplex
> unit, another PC, etc.)?
The remote end is another PC running FreeBSD (still 7.x).
I use tip(1) running inside a screen(1) session on that
remote PC to connect to my serial console.
The cable is a standard nullmodem cable, not selfmade.
It's a DB9-to-DB9 cable labelled "nullmodem", so I guess
it's correctly wired including carrier / handshake, i.e.
not just a 3-wire cable. (And it did work fine from
FreeBSD 4.x to 7.x ... sorry for repeating myself.)
Oliver Fromme, secnetix GmbH & Co. KG, Marktplatz 29, 85567 Grafing b. M.
Handelsregister: Registergericht Muenchen, HRA 74606, Geschäftsfuehrung:
secnetix Verwaltungsgesellsch. mbH, Handelsregister: Registergericht Mün-
chen, HRB 125758, Geschäftsführer: Maik Bachmann, Olaf Erb, Ralf Gebhart
FreeBSD-Dienstleistungen, -Produkte und mehr: http://www.secnetix.de/bsd
"In My Egoistical Opinion, most people's C programs should be indented
six feet downward and covered with dirt."
-- Blair P. Houghton
More information about the freebsd-stable