-----Original Message-----
From: cygwin-owner On Behalf Of Michael Wood
Sent: 20 May 2004 17:23
Hi-ya,
I get an "Access is denied" error message when attempting to create a
serial port connection through Cygwin, running on Win XP.
In cygwin, when I execute:
ls -l COM1
I get the following:
-rw-r--r-- 1 mwood mkgroup- 0 Jan 1 1970 COM1
However, when I execute:
chmod a+rw COM1
the command exits normally (no error message), but the permissions on
COM1 stay the same. Furthermore, I do not particularly
understand why if
I am the owner of COM1 (as illustrated by the 'ls -l'), why I
would get
a permission error.
I have successfully created and used a connection on the
serial port on
the same machine through a VMWare session running a Linux Red
Hat image.
I used a very similar procedure above, in that I simply changed the
permissions on "/dev/ttyS0" to grant all users read and write
permissions to the serial port.
Help would be greatly appreciated.
- Mike
#1. Why not use /dev/ttyS0 again? Cygwin is a posix compatible layer and
/dev/ttyS0 should work pretty much the same. BTW, which directory are you
in when you do those commands on COM1? Did you "cd /dev" or do you expect
it to just work anywhere, and if so, why?
#2. 'doze has some pretty funny ideas about files having the same name as
dos-devices (COMx:, PRN:, LPTx: etc). It doesn't like it at all.
Presumably somewhere between cygwin and 'doze a bit of confusion is creeping
in.
#3. I notice that if you're in /dev and you do "ls -la com1", you get the
right answer. But remember, under Posix, capitalisation matters, so "com1"
and "COM1" are two different files. Under 'doze, unfortunately, it doesn't.
So probably Cygwin knows that /dev/com1 is the serial port, thinks that
/dev/COM1 is something different because the case doesn't match, assumes
it's an ordinary file and passes the name through to the underlying 'doze
file-handling calls, which disagree with cygwin and think that it IS a
serial port, and then everybody gets confused.
#4. When I do "ls -la COM1", I just get:
dk@mace /> ls -la COM1
---------- 0 ???????? ???????? 0 Jan 1 1970 COM1
no matter what directory I'm in. Bizarre. When I'm do "ls -la /dev/com1",
I get the proper answer:
dk@mace /> ls -la /dev/com1
crw-rw-rw- 1 dk Domain U 117, 1 May 20 19:05 /dev/com1
but capitalizing it never works, not even in the /dev directory.
dk@mace /> ls -la /dev/COM1
---------- 0 ???????? ???????? 0 Jan 1 1970 /dev/COM1
#5. Anyway, the answer to your problem is that you were using the wrong
filename. The solution is to use the correct filename; either /dev/com1 or
/dev/ttyS0. And as to why there's a messed up COM1 in there, that's a
little bugette you've stumbled across.
cheers,
DaveK