Page 1 of 2

Fungerar i NetBSD?

Posted: Fri Mar 17, 2023 9:45 am
by adent
Hej!

Ni vet inte om någon provkört den i NetBSD?
Vad jag förstått så kör den vanlig serieport över USB?

Jag är sugen på att köpa en, men min server kör NetBSD så den
ska helst funka på den som ändå alltid är igång...

Lite googlande gjorde mig tyvärr inte klokare...

MVH: Mikael

Posted: Fri Mar 17, 2023 9:45 am
by Jaxån
Hej Micke!

Klart du skall prova. Jag vet inte hur bra NetBSD är på USB, men du får väl prova?
Källkoden finns ju, och jag har ju lärt dig allt jag kan om C, så koda stödet till NetBSD bode du ju klara :)

Posted: Fri Mar 17, 2023 9:45 am
by adent
Hmm, fick låna en Tellstick. NetBSD känner inte igen den, men efter en hel del googlande och rotande i källkoden till NetBSD's kärna så verkar det vara exakt samma grej som i fallet med Linux 2.4. Drivrutinen finns, men VendorID och ProductID känns inte igen. Håller på och kompilerar nu, men måste lämna tillbaka stickan imorgon innan jag hinner testa :( . Min server är för slö, en PIII 500Mhz.

Posted: Fri Mar 17, 2023 9:45 am
by micke.prag
rfcmd har ett libusb-läge där den inte behöver modulen i kärnan. Den använder istället libftdi som är OpenSource.

Tellstick i (free) BSD

Posted: Fri Mar 17, 2023 9:45 am
by louie
Jag fick igång Tellsticken i FreeBSD (som använder uftdi.c från NetBSD). Det som behövdes göras var att lägga till följande i

/usr/src/sys/dev/usb/usbdevs

Code: Select all

vendor TELLDUS          0x1781  Telldus
product TELLDUS TELLSTICK       0x0c30  Tellstick
och

telldus-core/rfcmd/rfcmd.c

Code: Select all

--- rfcmd.c     (revision 254)
+++ rfcmd.c     (working copy)
@@ -113,6 +113,8 @@
                        tio.c_cflag = B4800 | CS8 | CLOCAL | CREAD; /* CREAD not used yet */
                        tio.c_iflag = IGNPAR;
                        tio.c_oflag = 0;
+                       tio.c_ispeed = 4800;
+                       tio.c_ospeed = 4800;
                        tcflush(fd, TCIFLUSH);
                        tcsetattr(fd,TCSANOW,&tio);
(ovan kanske skall in i svn:en så det funkar default i fortsättningen?)

Kompilera och installera nya kärnan, starta om. Kör gmake i telldus-core/rfcmd/ sen är det bara att köra.

Posted: Fri Mar 17, 2023 9:45 am
by adent
Ah, min lösning var lite annorlunda, jag lade till product och vendor-id:na och ändrade så en annan drivrutin skulle användas (samma som äldre linuxar). Men i ditt fall dyker tellsticken fortfarande upp som ugen ?

Nu fick jag lust att prova igen... Ska kolla om jag kan låna tellsticken igen. Har inte råd att köpa någon den här månaden :/

Posted: Fri Mar 17, 2023 9:45 am
by louie
Nejdå, blir en riktig ucom som nås på /dev/cuaUx

Code: Select all

ucom0: <Telldus TellStick, class 0/0, rev 2.00/6.00, addr 2> on uhub0
Funkar med två stycken också.

Posted: Fri Mar 17, 2023 9:45 am
by micke.prag

Posted: Fri Mar 17, 2023 9:45 am
by louie
Nice :D

Posted: Fri Mar 17, 2023 9:45 am
by adent
Ah, FreeBSD har redan vendorid/productid på rätt drivis, till skillnad från NetBSD då? Så din första ändring ger den eg. bara rätt namn?

Posted: Fri Mar 17, 2023 9:45 am
by louie
adent wrote:Ah, FreeBSD har redan vendorid/productid på rätt drivis, till skillnad från NetBSD då? Så din första ändring ger den eg. bara rätt namn?
Jag är förvirrad, glömde ju helt skriva att jag fick ändra i uftdi.c också för att lägga till vendor- & productid:

Code: Select all

150a151,154
>       if (uaa->vendor == USB_VENDOR_TELLDUS &&
>           uaa->product == USB_PRODUCT_TELLDUS_TELLSTICK)
>               return (UMATCH_VENDOR_PRODUCT);
>
266a271,282
>       case USB_VENDOR_TELLDUS:
>               switch( uaa->product ){
>               case USB_PRODUCT_TELLDUS_TELLSTICK:
>                       sc->sc_type = UFTDI_TYPE_8U232AM;
>                       sc->sc_hdrlen = 0;
>                       break;
>
>               default:                /* Can't happen */
>                       goto bad;
>               }
>               break;
>

Posted: Fri Mar 17, 2023 9:45 am
by micke.prag
En intressant fråga: Vad händer vid "goto bad"?
Krashar man ett BSD-system om vi utvecklar fler produkter?

Posted: Fri Mar 17, 2023 9:45 am
by louie
micke.prag wrote:En intressant fråga: Vad händer vid "goto bad"?
Krashar man ett BSD-system om vi utvecklar fler produkter?
Nej det blir ingen krash utan attach-funktionen avbryts på ett snyggt sätt. Innan attach-koden kan köras måste enheten matchas (vilket sker runt rad 150), om den inte matchas kommer den inte heller attachas och då kommer den aldrig i närheten av det switch-statementet.

Om man skulle göra något fel när man ändrar i koden för uftdi.c (som t.ex. att glömma skapa något som matchar i attach-funktionen och bara ändra i match-funktionen) så får man följande:

Code: Select all

kernel: device_attach: ucom0 attach returned 6

OpenBSD också....

Posted: Fri Mar 17, 2023 9:45 am
by mayday
Jag följer väl upp med OpenBSD support då....

Patch mot -current, bör även fungera mot 4.4 och 4.5. Kanske även tidigare...

Jag har postat patcharna till tech@openbsd.org, så förhoppningsvis slipper man patcha om ett tag... Med det sagt så vet jag egentligen inte vad jag gör, utan går på chans :)

Jag byggde rfcmd för 20-30 minuter sedan och det fungerade, gissar louies patch var med då...

Code: Select all

Index: uftdi.c
===================================================================
RCS file: /cvs/src/sys/dev/usb/uftdi.c,v
retrieving revision 1.52
diff -u -r1.52 uftdi.c
--- uftdi.c     21 Apr 2009 05:22:51 -0000      1.52
+++ uftdi.c     22 Apr 2009 11:48:28 -0000
@@ -400,6 +400,7 @@
        { USB_VENDOR_TESTO, USB_PRODUCT_TESTO_SERIAL_1 },
        { USB_VENDOR_TESTO, USB_PRODUCT_TESTO_SERIAL_2 },
        { USB_VENDOR_TESTO, USB_PRODUCT_TESTO_SERVICE },
+       { USB_VENDOR_TELLDUS, USB_PRODUCT_TELLDUS_TELLSTICK },
        { USB_VENDOR_THURLBY, USB_PRODUCT_THURLBY_QL355P }
 };

Code: Select all

Index: usbdevs
===================================================================
RCS file: /cvs/src/sys/dev/usb/usbdevs,v
retrieving revision 1.425
diff -u -r1.425 usbdevs
--- usbdevs     21 Apr 2009 05:22:52 -0000      1.425
+++ usbdevs     22 Apr 2009 11:44:26 -0000
@@ -518,6 +518,7 @@
 vendor ASUS2           0x1761  ASUS
 vendor SWEEX2          0x177f  Sweex
 vendor METAGEEK                0x1781  MetaGeek
+vendor TELLDUS         0x1781  Telldus
 vendor DISPLAYLINK     0x17e9  DisplayLink
 vendor AMIT            0x18c5  AMIT
 vendor QCOM            0x18e8  Qcom
@@ -2898,6 +2899,9 @@

 /* Telex Communications products */
 product TELEX MIC1             0x0001  Microphone
+
+/* Telldus */
+product TELLDUS TELLSTICK      0x0c30  Tellstick

 /* Tenda */
 product TENDA TWL541U          0x1fab  TWL541U WLAN

Posted: Fri Mar 17, 2023 9:45 am
by mayday
Man behöver inte längra patcha OpenBSD.
(Om du inte kör 4.5 eller tidigare)