Configuration port rs232

classic Classic list List threaded Threaded
14 messages Options
Reply | Threaded
Open this post in threaded view
|

Configuration port rs232

Nicolas le Falher
Bonjour.

Sur une soekris net4501 avec OpenBSD 4.6, j'essaie de configurer le second port rs232 (com2) pour récupérer des données arrivant sur la pin RX (1200 7E1).

Avec un logiciel comme minicom ou cu, j'arrive bien à lire mes données via le device /dev/tty01 ou /dev/cua01.

Mon soucis actuellement, c'est de pouvoir configurer le device avec stty, puis par la suite avec la librairie termios.h.
Aucune modification via stty n'est prise en compte.
Il y a surement une étape qui m'échappe, j'ai épluché /etc/ttys, /etc/gettytab et /etc/termcap sans succès.

Merci.

#dmesg | grep com
com0 at isa0 port 0x3f8/8 irq 4: ns16550a, 16 byte fifo
com0: console
com1 at isa0 port 0x2f8/8 irq 3: ns16550a, 16 byte fifo

#stty -f /dev/tty01
speed 9600 baud;
lflags: echoe echoke echoctl
cflags: cs8 -parenb
# stty -f /dev/tty01 speed 1200
9600
# stty -f /dev/tty01 speed 1200
9600
# stty -f /dev/tty01            
speed 9600 baud;
lflags: echoe echoke echoctl
cflags: cs8 -parenb
#

Reply | Threaded
Open this post in threaded view
|

Re: Configuration port rs232

Nicolas le Falher
Suite à différent test, il faut que le port soit configuré dans le fichier /etc/ttys avec un appel à getty.
A partir de la, je peux configurer mon port.

Mais justement, je souhaiterais me passer de getty pour ne pas avoir de prompt de login sur ce port.

Si quelqu'un à la procédure.

Ps : En fait je cherche une solution équivalente au fichier /etc/inittab sur d'autre système.
Le fait de commenter la ligne du port désiré permet de le configurer sans pour avoir de prompt actif dessus.

Nicolas le Falher wrote
Bonjour.

Sur une soekris net4501 avec OpenBSD 4.6, j'essaie de configurer le second port rs232 (com2) pour récupérer des données arrivant sur la pin RX (1200 7E1).

Avec un logiciel comme minicom ou cu, j'arrive bien à lire mes données via le device /dev/tty01 ou /dev/cua01.

Mon soucis actuellement, c'est de pouvoir configurer le device avec stty, puis par la suite avec la librairie termios.h.
Aucune modification via stty n'est prise en compte.
Il y a surement une étape qui m'échappe, j'ai épluché /etc/ttys, /etc/gettytab et /etc/termcap sans succès.

Merci.

#dmesg | grep com
com0 at isa0 port 0x3f8/8 irq 4: ns16550a, 16 byte fifo
com0: console
com1 at isa0 port 0x2f8/8 irq 3: ns16550a, 16 byte fifo

#stty -f /dev/tty01
speed 9600 baud;
lflags: echoe echoke echoctl
cflags: cs8 -parenb
# stty -f /dev/tty01 speed 1200
9600
# stty -f /dev/tty01 speed 1200
9600
# stty -f /dev/tty01            
speed 9600 baud;
lflags: echoe echoke echoctl
cflags: cs8 -parenb
#
Reply | Threaded
Open this post in threaded view
|

Re: Configuration port rs232

Nicolas Bernard-2
Nicolas le Falher([hidden email])@2009.12.31 01:37:03 -0800 wrote:
>
> Suite à différent test, il faut que le port soit configuré dans le fichier
> /etc/ttys avec un appel à getty.
> A partir de la, je peux configurer mon port.
>
> Mais justement, je souhaiterais me passer de getty pour ne pas avoir de
> prompt de login sur ce port.

Salut,

As-tu essayé en passant par boot.conf? Est-ce que ca marche dans ce cas?

N.


signature.asc (204 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Configuration port rs232

Nicolas le Falher
Je viens de tester et je n'ai pas plus de succès.
Mais peux être je m'y prends mal.

dmesg :
com0 at isa0 port 0x3f8/8 irq 4: ns16550a, 16 byte fifo                        
com0: console                                                                  
com1 at isa0 port 0x2f8/8 irq 3: ns16550a, 16 byte fifo

/etc/boot.conf :
set tty com1
stty com1 1200 oddp
set tty com0
stty com0 9600

/etc/ttys :
tty00   "/usr/libexec/getty std.9600"   vt220    on secure
tty01   "/usr/libexec/getty std.9600"   vt220    on secure

#stty -f /dev/tty01
speed 9600 baud;
lflags: echoe echoke echoctl
cflags: cs8 -parenb
#

(Si je le fixe à la main ensuite ça marche vu la configuration du fichier /etc/ttys)
# stty -f /dev/tty01 1200 oddp                                                                
# stty -f /dev/tty01                                                                          
speed 1200 baud;                                                                              
lflags: echoe echoke echoctl                                                                  
cflags: cs7 parenb parodd  
#
Nicolas Bernard-2 wrote
Nicolas le Falher(n.lefalher@gmail.com)@2009.12.31 01:37:03 -0800 wrote:
>
> Suite à différent test, il faut que le port soit configuré dans le fichier
> /etc/ttys avec un appel à getty.
> A partir de la, je peux configurer mon port.
>
> Mais justement, je souhaiterais me passer de getty pour ne pas avoir de
> prompt de login sur ce port.

Salut,

As-tu essayé en passant par boot.conf? Est-ce que ca marche dans ce cas?

N.


 
Reply | Threaded
Open this post in threaded view
|

Re: Configuration port rs232

TeXitoi-2
Nicolas le Falher writes:

> Je viens de tester et je n'ai pas plus de succès.
> Mais peux être je m'y prends mal.
>
> dmesg :
> com0 at isa0 port 0x3f8/8 irq 4: ns16550a, 16 byte fifo                        
> com0: console                                                                  
> com1 at isa0 port 0x2f8/8 irq 3: ns16550a, 16 byte fifo
>
> /etc/boot.conf :
> set tty com1
> stty com1 1200 oddp

Avec ça, en enlevant le reste, tu as les messages de boot sur ton
terminal ? ça m'intéresse, j'ai jamais réussi à avoir les message
kernel et faire une installation sur mon minitel.

> set tty com0
> stty com0 9600
>
> /etc/ttys :
> tty00   "/usr/libexec/getty std.9600"   vt220    on secure
> tty01   "/usr/libexec/getty std.9600"   vt220    on secure

Là, tu remets ton port en 9600 no parity, dc tout est normal dans ce
que tu vois. Il faut que tu rajoutes une ligne dans le /etc/gettytab
du genre

myterm:\
        :op:sp#1200:

et que tu metes dans le ttys

tty01   "/usr/libexec/getty myterm"   vt220    on secure

ça, ça devrait marcher, mais il y a un bug dans getty (que j'ai avec
even parity en tous cas). Un patch qui devrait marcher (pas vraiment
testé, mais j'utilise un binaire getty patché de ce genre) :

Le patch doit pas passer à cause des espaces au lieu des tabs, mais tu
as l'idée. Le bug est en fait que getty suppose que la conf par défaut
n'est pas no parity, alors que c'est le cas. Le patch suppose que la
conf par défaut est no parity (faut vraiment que je fasse le rapport
de bug).

Tous ça devrait te permettre d'avoir un login utilisable sur ton
terminal, mais ce n'est pas exactement ce que tu veux si j'ai bien
compris.

diff -u getty/main.c getty-new/main.c
--- getty/main.c        Sun May 28 21:58:29 2006
+++ getty-new/main.c    Thu Apr  2 01:08:31 2009
@@ -511,7 +508,7 @@
        char c;
 
        c = cc;
-       if (!NP) {
+       if (AP || EP || OP) {
                c |= partab[c&0177] & 0200;
                if (OP)
                        c ^= 0200;
diff -u getty/subr.c getty-new/subr.c
--- getty/subr.c        Sun May 28 21:33:54 2006
+++ getty-new/subr.c    Thu Apr  2 01:07:38 2009
@@ -236,11 +236,7 @@
        cflag = omode.c_cflag;
        lflag = omode.c_lflag;
 
-       if (NP) {
-               CLR(cflag, CSIZE|PARENB);
-               SET(cflag, CS8);
-               CLR(iflag, ISTRIP|INPCK|IGNPAR);
-       } else if (AP || EP || OP) {
+       if (AP || EP || OP) {
                CLR(cflag, CSIZE);
                SET(cflag, CS7|PARENB);
                SET(iflag, ISTRIP);
@@ -258,7 +254,11 @@
                        CLR(iflag, INPCK|IGNPAR);
                        CLR(cflag, PARODD);
                }
-       } /* else, leave as is */
+       } else if (NP) {
+                CLR(cflag, CSIZE|PARENB);
+                SET(cflag, CS8);
+                CLR(iflag, ISTRIP|INPCK|IGNPAR);
+       } /* else, leave as is */
 
        if (UC) {
                SET(iflag, IUCLC);


________________________________
French OpenBSD mailing list
[hidden email]
http://www.openbsd-france.org/ml

Reply | Threaded
Open this post in threaded view
|

Re: Configuration port rs232

Nicolas le Falher
>Avec ça, en enlevant le reste, tu as les messages de boot sur ton
>terminal ? ça m'intéresse, j'ai jamais réussi à avoir les message
>kernel et faire une installation sur mon minitel.

Tu veux la sortie du boot complet ?

Concernant getty, je ne comprend pas pourquoi l'on ne peux pas s'en passer tout simplement.
A ce que je lis dans le man, getty configure un tty, puis fait un appel a login() pour ensuite pouvoir se loguer.

Mon besoin justement, est de pouvoir configurer mon port sans qu'il y est de prompt via login().
Car sur ce port, j'ai des données qui arrive en continu. Donc login() prend ces données comme login/mdp, ce que je ne veux pas.

Sortie boot :

comBIOS ver. 1.33  20080103  Copyright (C) 2000-2007 Soekris Engineering.      
                                                                               
net45xx                                                                        
                                                                               
0064 Mbyte Memory                        CPU Elan SC520 133 Mhz                
                                                                               
Pri Mas  SanDisk SDCFH-512               LBA 993-16-63  500 Mbyte              
                                                                               
   Seconds to automatic boot.   Press Ctrl-P for entering Monitor.              
Using drive 0, partition 3.                                                    
Loading...                                                                      
probing: pc0 com0 com1 pci mem[639K 63M a20=on]                                
disk: hd0+                                                                      
>> OpenBSD/i386 BOOT 3.02                                                      
>> OpenBSD/i386 BOOT 3.02                                                      
boot>                                                                          
booting hd0a:/bsd: 6563548+1052072 [52+345584+327881]=0x7e7ce8                  
entry point at 0x200120                                                        
                                                                               
[ using 673892 bytes of bsd ELF symbol table ]                                  
Copyright (c) 1982, 1986, 1989, 1991, 1993                                      
        The Regents of the University of California.  All rights reserved.      
Copyright (c) 1995-2009 OpenBSD. All rights reserved.  http://www.OpenBSD.org   
                                                                               
OpenBSD 4.6 (GENERIC) #58: Thu Jul  9 21:24:42 MDT 2009                        
    deraadt@i386.openbsd.org:/usr/src/sys/arch/i386/compile/GENERIC            
cpu0: AMD Am5x86 W/B 133/160 ("AuthenticAMD" 486-class)                        
cpu0: FPU                                                                      
real mem  = 66678784 (63MB)                                                    
avail mem = 54636544 (52MB)                                                    
mainbus0 at root                                                                
bios0 at mainbus0: AT/286+ BIOS, date 20/80/03, BIOS32 rev. 0 @ 0xf7840        
pcibios0 at bios0: rev 2.0 @ 0xf0000/0x10000                                    
pcibios0: pcibios_get_intr_routing - function not supported                    
pcibios0: PCI IRQ Routing information unavailable.                              
pcibios0: PCI bus #0 is the last bus                                            
bios0: ROM list: 0xc8000/0x9000                                                
cpu0 at mainbus0: (uniprocessor)                                                
pci0 at mainbus0 bus 0: configuration mode 1 (bios)                            
elansc0 at pci0 dev 0 function 0 "AMD ElanSC520 PCI" rev 0x00: product 0 steppi>
gpio0 at elansc0: 32 pins                                                      
ral0 at pci0 dev 16 function 0 "Ralink RT2560" rev 0x01: irq 10, address 00:10:1
ral0: MAC/BBP RT2560 (rev 0x04), RF RT2525                                      
sis0 at pci0 dev 18 function 0 "NS DP83815 10/100" rev 0x00, DP83816A: irq 11, 0
nsphyter0 at sis0 phy 0: DP83815 10/100 PHY, rev. 1                            
sis1 at pci0 dev 19 function 0 "NS DP83815 10/100" rev 0x00, DP83816A: irq 5, a1
nsphyter1 at sis1 phy 0: DP83815 10/100 PHY, rev. 1                            
sis2 at pci0 dev 20 function 0 "NS DP83815 10/100" rev 0x00, DP83816A: irq 9, a2
nsphyter2 at sis2 phy 0: DP83815 10/100 PHY, rev. 1                            
isa0 at mainbus0                                                                
isadma0 at isa0                                                                
com0 at isa0 port 0x3f8/8 irq 4: ns16550a, 16 byte fifo                        
com0: console                                                                  
com1 at isa0 port 0x2f8/8 irq 3: ns16550a, 16 byte fifo                        
pckbc0 at isa0 port 0x60/5                                                      
pckbd0 at pckbc0 (kbd slot)                                                    
pckbc0: using irq 1 for kbd slot                                                
wskbd0 at pckbd0: console keyboard                                              
wdc0 at isa0 port 0x1f0/8 irq 14                                                
wd0 at wdc0 channel 0 drive 0: <SanDisk SDCFH-512>                             
wd0: 1-sector PIO, LBA, 488MB, 1000944 sectors                                  
wd0(wdc0:0:0): using BIOS timings                                              
pcppi0 at isa0 port 0x61                                                        
midi0 at pcppi0: <PC speaker>                                                   
spkr0 at pcppi0                                                                
npx0 at isa0 port 0xf0/16: reported by CPUID; using exception 16                
biomask f1c5 netmask ffe5 ttymask ffff                                          
softraid0 at root                                                              
root on wd0a swap on wd0b dump on wd0b                                          
Automatic boot in progress: starting file system checks.                        
/dev/rwd0a: file system is clean; not checking                                  
setting tty flags                                                              
pf enabled                                                                      
starting network                                                                
DHCPDISCOVER on sis0 to 255.255.255.255 port 67 interval 2                      
DHCPOFFER from 10.0.0.1 (00:16:d3:20:bc:5e)                                    
DHCPREQUEST on sis0 to 255.255.255.255 port 67                                  
DHCPACK from 10.0.0.1 (00:16:d3:20:bc:5e)                                      
bound to 10.0.0.5 -- renewal in 300 seconds.                                    
starting system logger                                                          
starting initial daemons:.                                                      
savecore: /dev/wd0b: Device not configured                                      
checking quotas: done.                                                          
building ps databases: kvm dev.                                                
clearing /tmp                                                                  
starting pre-securelevel daemons:.                                              
setting kernel security level: kern.securelevel: 0 -> 1                        
creating runtime link editor directory cache.                                  
preserving editor files.                                                        
ssh-keygen: generating new DSA host key... done.                                
ssh-keygen: generating new RSA host key... done.                                
ssh-keygen: generating new RSA1 host key... done.                              
openssl: generating new isakmpd RSA key... done.                                
starting network daemons: sendmail inetd sshd.                                  
starting local daemons:.                                                        
standard daemons: cron.                                                        
Wed Dec 23 00:17:45 CET 2009                                                    
                                                                               
OpenBSD/i386 (edf.example.org) (tty00)


TeXitoi-2 wrote
Nicolas le Falher writes:

> Je viens de tester et je n'ai pas plus de succès.
> Mais peux être je m'y prends mal.
>
> dmesg :
> com0 at isa0 port 0x3f8/8 irq 4: ns16550a, 16 byte fifo                        
> com0: console                                                                  
> com1 at isa0 port 0x2f8/8 irq 3: ns16550a, 16 byte fifo
>
> /etc/boot.conf :
> set tty com1
> stty com1 1200 oddp

Avec ça, en enlevant le reste, tu as les messages de boot sur ton
terminal ? ça m'intéresse, j'ai jamais réussi à avoir les message
kernel et faire une installation sur mon minitel.

> set tty com0
> stty com0 9600
>
> /etc/ttys :
> tty00   "/usr/libexec/getty std.9600"   vt220    on secure
> tty01   "/usr/libexec/getty std.9600"   vt220    on secure

Là, tu remets ton port en 9600 no parity, dc tout est normal dans ce
que tu vois. Il faut que tu rajoutes une ligne dans le /etc/gettytab
du genre

myterm:\
        :op:sp#1200:

et que tu metes dans le ttys

tty01   "/usr/libexec/getty myterm"   vt220    on secure

ça, ça devrait marcher, mais il y a un bug dans getty (que j'ai avec
even parity en tous cas). Un patch qui devrait marcher (pas vraiment
testé, mais j'utilise un binaire getty patché de ce genre) :

Le patch doit pas passer à cause des espaces au lieu des tabs, mais tu
as l'idée. Le bug est en fait que getty suppose que la conf par défaut
n'est pas no parity, alors que c'est le cas. Le patch suppose que la
conf par défaut est no parity (faut vraiment que je fasse le rapport
de bug).

Tous ça devrait te permettre d'avoir un login utilisable sur ton
terminal, mais ce n'est pas exactement ce que tu veux si j'ai bien
compris.

diff -u getty/main.c getty-new/main.c
--- getty/main.c        Sun May 28 21:58:29 2006
+++ getty-new/main.c    Thu Apr  2 01:08:31 2009
@@ -511,7 +508,7 @@
        char c;
 
        c = cc;
-       if (!NP) {
+       if (AP || EP || OP) {
                c |= partab[c&0177] & 0200;
                if (OP)
                        c ^= 0200;
diff -u getty/subr.c getty-new/subr.c
--- getty/subr.c        Sun May 28 21:33:54 2006
+++ getty-new/subr.c    Thu Apr  2 01:07:38 2009
@@ -236,11 +236,7 @@
        cflag = omode.c_cflag;
        lflag = omode.c_lflag;
 
-       if (NP) {
-               CLR(cflag, CSIZE|PARENB);
-               SET(cflag, CS8);
-               CLR(iflag, ISTRIP|INPCK|IGNPAR);
-       } else if (AP || EP || OP) {
+       if (AP || EP || OP) {
                CLR(cflag, CSIZE);
                SET(cflag, CS7|PARENB);
                SET(iflag, ISTRIP);
@@ -258,7 +254,11 @@
                        CLR(iflag, INPCK|IGNPAR);
                        CLR(cflag, PARODD);
                }
-       } /* else, leave as is */
+       } else if (NP) {
+                CLR(cflag, CSIZE|PARENB);
+                SET(cflag, CS8);
+                CLR(iflag, ISTRIP|INPCK|IGNPAR);
+       } /* else, leave as is */
 
        if (UC) {
                SET(iflag, IUCLC);


________________________________
French OpenBSD mailing list
misc@openbsd-france.org
http://www.openbsd-france.org/ml
Reply | Threaded
Open this post in threaded view
|

Re: Configuration port rs232

TeXitoi-2
Nicolas le Falher <[hidden email]> writes:

> >Avec ça, en enlevant le reste, tu as les messages de boot sur ton
> >terminal ? ça m'intéresse, j'ai jamais réussi à avoir les message
> >kernel et faire une installation sur mon minitel.
>
> Tu veux la sortie du boot complet ?

Je veux juste savoir si tes commandes dans boot.conf fonctionnent,
i.e. que tu as bien la séquence de boot (prompt boot + log kernel +
log systemes de lancement) affiché de manière lisible sur ton terminal
à odd parity (parce que configurer boot.conf, ça sert juste à ça, tu
peux completement t'en passer dans ton cas).

> Concernant getty, je ne comprend pas pourquoi l'on ne peux pas s'en passer
> tout simplement.
> A ce que je lis dans le man, getty configure un tty, puis fait un appel a
> login() pour ensuite pouvoir se loguer.

Pour avoir lu le code de getty, oui, c'est en gros ce qu'il fait.

> Mon besoin justement, est de pouvoir configurer mon port sans qu'il y est de
> prompt via login().

Tu peux faire un programme qui fait comme getty, et l'appeler à la
place dans ton ttys à la place de getty. Genre, en méthode bourrin, un
programme en C qui fait

#include <unistd.h>
int
main(void) {
        system("stty tesoption");
        execv("/ton/programme", {"/ton/programme", "argument1"});
        return 1;
}

C'est pas testé, il y a probablement des erreurs de syntaxe, mais tu
as l'idée. Je ne connais pas de méthode propre. Possible qu'un script
shell du genre

#!/bin/sh
stty tesoption
echo "hey ca marche !"
exec /ton/programme argument1

ça peux marcher (tjs à appeler dans /etc/ttys à la place de getty).

> Car sur ce port, j'ai des données qui arrive en continu. Donc login() prend
> ces données comme login/mdp, ce que je ne veux pas.

Je ne pense pas, login attend des entrées du device, qui correspond au
clavier du terminal, et pas à ton autre programme. Par contre, les
deux programmes en parallèle sur le même descripteur de fichier, c'est
crade et ça risque de merder.

Tiens-nous au courant des tes tests.

--
Guillaume Pinot                  http://www.irccyn.ec-nantes.fr/~pinot/

``Computers are good at following instructions, but not at reading your
mind.'' -- Donald E. Knuth, the TeXbook

()  ASCII ribbon campaign      -- Against HTML e-mail
/\  http://www.asciiribbon.org -- Against proprietary attachments


________________________________
French OpenBSD mailing list
[hidden email]
http://www.openbsd-france.org/ml

Reply | Threaded
Open this post in threaded view
|

Re: Configuration port rs232

Nicolas le Falher
Merci pour cette piste, j'ai maintenant de quoi tester.
Je posterais mes résultats.

Bonne fêtes.

TeXitoi-2 wrote
Nicolas le Falher <n.lefalher@gmail.com> writes:

> >Avec ça, en enlevant le reste, tu as les messages de boot sur ton
> >terminal ? ça m'intéresse, j'ai jamais réussi à avoir les message
> >kernel et faire une installation sur mon minitel.
>
> Tu veux la sortie du boot complet ?

Je veux juste savoir si tes commandes dans boot.conf fonctionnent,
i.e. que tu as bien la séquence de boot (prompt boot + log kernel +
log systemes de lancement) affiché de manière lisible sur ton terminal
à odd parity (parce que configurer boot.conf, ça sert juste à ça, tu
peux completement t'en passer dans ton cas).

> Concernant getty, je ne comprend pas pourquoi l'on ne peux pas s'en passer
> tout simplement.
> A ce que je lis dans le man, getty configure un tty, puis fait un appel a
> login() pour ensuite pouvoir se loguer.

Pour avoir lu le code de getty, oui, c'est en gros ce qu'il fait.

> Mon besoin justement, est de pouvoir configurer mon port sans qu'il y est de
> prompt via login().

Tu peux faire un programme qui fait comme getty, et l'appeler à la
place dans ton ttys à la place de getty. Genre, en méthode bourrin, un
programme en C qui fait

#include <unistd.h>
int
main(void) {
        system("stty tesoption");
        execv("/ton/programme", {"/ton/programme", "argument1"});
        return 1;
}

C'est pas testé, il y a probablement des erreurs de syntaxe, mais tu
as l'idée. Je ne connais pas de méthode propre. Possible qu'un script
shell du genre

#!/bin/sh
stty tesoption
echo "hey ca marche !"
exec /ton/programme argument1

ça peux marcher (tjs à appeler dans /etc/ttys à la place de getty).

> Car sur ce port, j'ai des données qui arrive en continu. Donc login() prend
> ces données comme login/mdp, ce que je ne veux pas.

Je ne pense pas, login attend des entrées du device, qui correspond au
clavier du terminal, et pas à ton autre programme. Par contre, les
deux programmes en parallèle sur le même descripteur de fichier, c'est
crade et ça risque de merder.

Tiens-nous au courant des tes tests.

--
Guillaume Pinot                  http://www.irccyn.ec-nantes.fr/~pinot/

``Computers are good at following instructions, but not at reading your
mind.'' -- Donald E. Knuth, the TeXbook

()  ASCII ribbon campaign      -- Against HTML e-mail
/\  http://www.asciiribbon.org -- Against proprietary attachments


________________________________
French OpenBSD mailing list
misc@openbsd-france.org
http://www.openbsd-france.org/ml
Reply | Threaded
Open this post in threaded view
|

Re: Re: Configuration port rs232

Nicolas Bernard-2
In reply to this post by TeXitoi-2
TeXitoi([hidden email])@2009.12.31 17:12:57 +0100 wrote:

> > Mon besoin justement, est de pouvoir configurer mon port sans qu'il y est de
> > prompt via login().
>
> Tu peux faire un programme qui fait comme getty, et l'appeler à la
> place dans ton ttys à la place de getty. Genre, en méthode bourrin, un
> programme en C qui fait
>
> #include <unistd.h>
> int
> main(void) {
>         system("stty tesoption");
>         execv("/ton/programme", {"/ton/programme", "argument1"});
>         return 1;
> }
>
> C'est pas testé, il y a probablement des erreurs de syntaxe, mais tu
> as l'idée. Je ne connais pas de méthode propre. Possible qu'un script
> shell du genre
>
> #!/bin/sh
> stty tesoption
> echo "hey ca marche !"
> exec /ton/programme argument1
>
> ça peux marcher (tjs à appeler dans /etc/ttys à la place de getty).
D'après la page man gettytab(5), on peut changer le programme que getty
appelle après avoir configuré le terminal.

N.


signature.asc (204 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Re: Configuration port rs232

Nicolas le Falher
C'est à cette option que tu pense ?
lo        str       /usr/bin/login Program to execute when name obtained.

Si c'est celle la, le programme passé en paramètre ne s'exécute pas après avoir reçu un login/password ?

Nicolas Bernard-2 wrote
TeXitoi(texitoi@texitoi.homelinux.org)@2009.12.31 17:12:57 +0100 wrote:
> > Mon besoin justement, est de pouvoir configurer mon port sans qu'il y est de
> > prompt via login().
>
> Tu peux faire un programme qui fait comme getty, et l'appeler à la
> place dans ton ttys à la place de getty. Genre, en méthode bourrin, un
> programme en C qui fait
>
> #include <unistd.h>
> int
> main(void) {
>         system("stty tesoption");
>         execv("/ton/programme", {"/ton/programme", "argument1"});
>         return 1;
> }
>
> C'est pas testé, il y a probablement des erreurs de syntaxe, mais tu
> as l'idée. Je ne connais pas de méthode propre. Possible qu'un script
> shell du genre
>
> #!/bin/sh
> stty tesoption
> echo "hey ca marche !"
> exec /ton/programme argument1
>
> ça peux marcher (tjs à appeler dans /etc/ttys à la place de getty).

D'après la page man gettytab(5), on peut changer le programme que getty
appelle après avoir configuré le terminal.

N.


 
Reply | Threaded
Open this post in threaded view
|

Re: Re: Configuration port rs232

Nicolas Bernard-2
Nicolas le Falher([hidden email])@2009.12.31 10:36:49 -0800 wrote:
>
> C'est à cette option que tu pense ?
> lo        str       /usr/bin/login Program to execute when name obtained.

oui.

> Si c'est celle la, le programme passé en paramètre ne s'exécute pas après
> avoir reçu un login/password ?

Je ne pense pas. A priori dans le cas habituel c'est le programme login
qui te demande le login/pwd; il faut donc qu'il soit déjà lancé pour
pouvoir le demander.

N.

signature.asc (204 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Re: Configuration port rs232

Nicolas le Falher
Après plusieurs essais je me rend compte que getty ne prend pas en compte le profil que je lui passe.
Erreur de ma part ?

# cat /etc/ttys | grep tty0[01]
tty00   "/usr/libexec/getty std.9600"   vt220    on secure
tty01   "/usr/libexec/getty std.19200"  vt220    on secure

/etc/gettytab :
2|std.9600|9600-baud:\                                                            
        :sp#9600:
g|std.19200|19200-baud:\
        :sp#19200:

# stty -f /dev/tty00                                                              
speed 9600 baud;                                                                  
lflags: echoe echoke echoctl pendin                                              
cflags: cs8 -parenb                                                              
# stty -f /dev/tty01                                                              
speed 9600 baud;                                                                  
lflags: echoe echoke echoctl                                                      
cflags: cs8 -parenb        
# stty -f /dev/tty01 1200 oddp
# stty -f /dev/tty01          
speed 1200 baud;
lflags: echoe echoke echoctl
cflags: cs7 parenb parodd
#



Nicolas Bernard-2 wrote
Nicolas le Falher(n.lefalher@gmail.com)@2009.12.31 10:36:49 -0800 wrote:
>
> C'est à cette option que tu pense ?
> lo        str       /usr/bin/login Program to execute when name obtained.

oui.

> Si c'est celle la, le programme passé en paramètre ne s'exécute pas après
> avoir reçu un login/password ?

Je ne pense pas. A priori dans le cas habituel c'est le programme login
qui te demande le login/pwd; il faut donc qu'il soit déjà lancé pour
pouvoir le demander.

N.

 
Reply | Threaded
Open this post in threaded view
|

Re: Re: Configuration port rs232

Nicolas le Falher

Bonjour.

Cela fait un moment, mais je reviens avec une solution à mon problème.

Pour configurer un port rs232 sur Openbsd à partir de la lib termios.h, je
dois obligatoirement dans le fichier /etc/ttys mettre le champ status à
"on", ce qui va lancer getty sur ce device.

A partir de la, si le code avec termios.h est mauvais, le port reprendra sa
configuration d'origine, celle passé à getty.

Donc de ce cote plus de soucis.


Maintenant autre chose, à propos de getty, c'est le timeout.
Mon code ouvre mon device avec open() et lit en continu le port.

Le soucis est qu'au bout de ~9h d'éxecution, getty me ferme le port, avec
comme message dans /var/log/messages : getty: getty exiting due to excessive
running time

Dans le man de gettytab, il existe un argument "to" pour le timeout, mais
qui n'est pas utilisé par défaut.

Donc je sèche :).
Si quelqu'un a une idée, qu'il n'hésite pas.


Nicolas le Falher wrote:

>
> Après plusieurs essais je me rend compte que getty ne prend pas en compte
> le profil que je lui passe.
> Erreur de ma part ?
>
> # cat /etc/ttys | grep tty0[01]
> tty00   "/usr/libexec/getty std.9600"   vt220    on secure
> tty01   "/usr/libexec/getty std.19200"  vt220    on secure
>
> /etc/gettytab :
> 2|std.9600|9600-baud:\                                                            
>         :sp#9600:
> g|std.19200|19200-baud:\
>         :sp#19200:
>
> # stty -f /dev/tty00                                                              
> speed 9600 baud;                                                                  
> lflags: echoe echoke echoctl pendin                                              
> cflags: cs8 -parenb                                                              
> # stty -f /dev/tty01                                                              
> speed 9600 baud;                                                                  
> lflags: echoe echoke echoctl                                                      
> cflags: cs8 -parenb        
> # stty -f /dev/tty01 1200 oddp
> # stty -f /dev/tty01          
> speed 1200 baud;
> lflags: echoe echoke echoctl
> cflags: cs7 parenb parodd
> #
>



Nicolas Bernard-2 wrote:

>
> Nicolas le Falher([hidden email])@2009.12.31 10:36:49 -0800 wrote:
>>
>> C'est à cette option que tu pense ?
>> lo        str       /usr/bin/login Program to execute when name obtained.
>
> oui.
>
>> Si c'est celle la, le programme passé en paramètre ne s'exécute pas après
>> avoir reçu un login/password ?
>
> Je ne pense pas. A priori dans le cas habituel c'est le programme login
> qui te demande le login/pwd; il faut donc qu'il soit déjà lancé pour
> pouvoir le demander.
>
> N.
>
 




--
View this message in context: http://old.nabble.com/Configuration-port-rs232-tp26905260p29449200.html
Sent from the openbsd - France mailing list archive at Nabble.com.


________________________________
French OpenBSD mailing list
[hidden email]
http://www.openbsd-france.org/communaute.php

Reply | Threaded
Open this post in threaded view
|

Re: Re: Configuration port rs232

Nicolas le Falher
In reply to this post by Nicolas le Falher
Bonjour.

Cela fait un moment, mais je reviens avec une solution à mon problème.

Pour configurer un port rs232 sur Openbsd à partir de la lib termios.h, je dois obligatoirement dans le fichier /etc/ttys mettre le champ status à "on", ce qui va lancer getty sur ce device.

A partir de la, si le code avec termios.h est mauvais, le port reprendra sa configuration d'origine, celle passé à getty.

Donc de ce cote plus de soucis.


Maintenant autre chose, à propos de getty, c'est le timeout.
Mon code ouvre mon device avec open() et lit en continu le port.

Le soucis est qu'au bout de ~9h d'éxecution, getty me ferme le port, avec comme message dans /var/log/messages : getty: getty exiting due to excessive running time

Dans le man de gettytab, il existe un argument "to" pour le timeout, mais qui n'est pas utilisé par défaut.

Donc je sèche :).
Si quelqu'un a une idée, qu'il n'hésite pas.

Nicolas le Falher wrote
Après plusieurs essais je me rend compte que getty ne prend pas en compte le profil que je lui passe.
Erreur de ma part ?

# cat /etc/ttys | grep tty0[01]
tty00   "/usr/libexec/getty std.9600"   vt220    on secure
tty01   "/usr/libexec/getty std.19200"  vt220    on secure

/etc/gettytab :
2|std.9600|9600-baud:\                                                            
        :sp#9600:
g|std.19200|19200-baud:\
        :sp#19200:

# stty -f /dev/tty00                                                              
speed 9600 baud;                                                                  
lflags: echoe echoke echoctl pendin                                              
cflags: cs8 -parenb                                                              
# stty -f /dev/tty01                                                              
speed 9600 baud;                                                                  
lflags: echoe echoke echoctl                                                      
cflags: cs8 -parenb        
# stty -f /dev/tty01 1200 oddp
# stty -f /dev/tty01          
speed 1200 baud;
lflags: echoe echoke echoctl
cflags: cs7 parenb parodd
#

Nicolas Bernard-2 wrote
Nicolas le Falher(n.lefalher@gmail.com)@2009.12.31 10:36:49 -0800 wrote:
>
> C'est à cette option que tu pense ?
> lo        str       /usr/bin/login Program to execute when name obtained.

oui.

> Si c'est celle la, le programme passé en paramètre ne s'exécute pas après
> avoir reçu un login/password ?

Je ne pense pas. A priori dans le cas habituel c'est le programme login
qui te demande le login/pwd; il faut donc qu'il soit déjà lancé pour
pouvoir le demander.

N.