how and by what is /dev/ttyS0 made?
All, the issue is /dev/ttyS0 is not being produced at boot up. The system is a laptop Fedora Core 4 and the BIOS program shows the port up and operational.
Does the serial driver run of a script? Where does the serial driver poll for config information? dmesg does not show any referance to serial devices. Thanks Dan |
Well, I'm not a guru on this one for sure. You may have to enable that in the kernel. Look here:
Device Drivers ---> Character devices ---> Serial drivers ---> then make it look like this: Code:
│ │ <*> 8250/16550 and compatible serial support │ │ Code:
Serial: 8250/16550 driver $Revision: 1.90 $ 8 ports, IRQ sharing disabled Hope that helps. :D :D :D :D :D |
Seems to be a udev or devfs problem, but we would need further info to be able to help you:
* Which distro you are using * What kernel and whether you compiled it yourself, or it's a stock kernel A hint: * /dev/ttySN are started by the pppd daemon, or other serial daemons, and depends on the ppp or serial modules in your kernel, if they are not present it means that you haven't set up your dial-up connection. In order to tell you what modules you need to load we need to know what is attached to the serial port. If it's a serial modem, try: Code:
modprobe ppp_generic |
The kernel config options are:
# # Serial drivers # CONFIG_SERIAL_8250=m # CONFIG_SERIAL_8250_CS is not set CONFIG_SERIAL_8250_NR_UARTS=4 # CONFIG_SERIAL_8250_EXTENDED is not set |
NOTE: This is a dirty brute force approach, I'm sure there is a proper and more elegant way of getting it running using FC's own tools.
It could work as a temporary solution, anyway, but I would look for a permanent fix. Modules: Code:
modprobe serial-8250 Code:
find /lib/modules/$(uname -r) -name "*serial*" Once you are down with the modules try if the device is there: Code:
setserial -a /dev/ttyS0 --- tons of info Code:
setserial /dev/ttyS0 autoconfig [quote] /etc/rc.local ... modprobe WHICHEVER_MODULE_TO_LOAD setserial /dev/ttyS0 autoconfig [quote] There is also a way to force things a bit more by manually creating device nodes, whichever their kind is: the mknod command. To take it short: Code:
mknod --mode=0777 /dev/ttyS0 c 4 64 The list where the mayor and minor numbers (the last two arguments to mknod) are listed in /usr/src/linux/Documentation/devices.txt, with this as a reference you will be able to create device nodes when needed. Try it and give us feedback. I'm anyway sure that this problem can be solved in a Fedora Core-Friendly way, specially if anaconda and the hardware related modules are all up and running, watch for hotplug, coldplug and any FC4/Anaconda specific daemons. These daemons are started and configured from an anaconda GUI or using ksysv, it's just drag and drop or clicking check boxes. Hope this helps ;) |
The biggest question is going to be... are you running a Linux 2.6 version that uses udev?
If so, then the udev subsystem should have detected whatever serial devices exist and it should automatically create a /dev entry for it... effectively doing for you automatically what runlevel0 described how to do manually. |
Thanks for the modprobe advice. Modprobe of the serial devices worked. After modprobe of serial_core and 8250 the device was created.
Now the question is: What is missing to prevent it being found? Thanks - Dan |
There is a file that you need to add it to so that when you boot, it will load the module itself. For mine it is /etc/modules.autoload.d/kernel-2.6. That may be different on yours though.
Later :D :D :D :D |
Quote:
I have been using Red Hats and FC until FC2 and there wasn't such config files there. They used the /etc/sysconfig mechanism instead putting all the rest of the config stuff there and in /etc/rc.local. |
Quote:
Later :D :D :D :D |
Quote:
With the module loaded and the device enabled everything should run fine. A way to have it loaded at early start up is recompiling the kernel and configuring the serial stuff directly into the kernel. I still don't know what you have attached to the serial port, so my indications could be partly wrong. The responsible of creating the serial devices /dev/ttySN and loading the kernel modules in case you have a modem attached is the pppd (PPP daemon). To enable it at start up you should try these two steps: First take a Code:
service --status-all | grep running kudzu pppd The pppd runs on demand called by your networking scripts, but you need the ppp modules loaded. The needed module is ppp_generic. Kudzu is the daemon responsible for polling the hardware and setting stuff up, normally it starts during boot and is killed when you enter your default runlevel. If you swap devices a lot or have issues like the one you described it could be of use having kudzu enabled in runlevel 5. To do this use either chkconfig on a console or invoke the fine Serviceconf utility to manage the daemons graphically. For your convenience, here is the console command: Code:
chkconfig --add kudzu --level 35 (it's 3 and 5 not 35, there is *no* separation) To have the PPPD set up you would need to use the Red Hat Network Setup tool, this GUI should lead you through the process and also load the needed modules, set up the devices and do all the rest of the dirty work for you. |
All times are GMT -5. The time now is 04:16 PM. |