Fungerar i NetBSD?

Moderator: Telldus

adent
Posts: 5
Joined: Fri Mar 17, 2023 9:45 am
Location: Lund
Contact:

Fungerar i NetBSD?

Post 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
Jaxån
Posts: 199
Joined: Fri Mar 17, 2023 9:45 am

Post 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 :)
adent
Posts: 5
Joined: Fri Mar 17, 2023 9:45 am
Location: Lund
Contact:

Post 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.
micke.prag
Site Admin
Posts: 2243
Joined: Fri Mar 17, 2023 9:45 am
Location: Lund
Contact:

Post 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.
Micke Prag
Software
Telldus Technologies
louie
Posts: 14
Joined: Fri Mar 17, 2023 9:45 am

Tellstick i (free) BSD

Post 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.
adent
Posts: 5
Joined: Fri Mar 17, 2023 9:45 am
Location: Lund
Contact:

Post 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 :/
louie
Posts: 14
Joined: Fri Mar 17, 2023 9:45 am

Post 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å.
micke.prag
Site Admin
Posts: 2243
Joined: Fri Mar 17, 2023 9:45 am
Location: Lund
Contact:

Post by micke.prag »

Micke Prag
Software
Telldus Technologies
louie
Posts: 14
Joined: Fri Mar 17, 2023 9:45 am

Post by louie »

Nice :D
adent
Posts: 5
Joined: Fri Mar 17, 2023 9:45 am
Location: Lund
Contact:

Post 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?
louie
Posts: 14
Joined: Fri Mar 17, 2023 9:45 am

Post 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;
>
micke.prag
Site Admin
Posts: 2243
Joined: Fri Mar 17, 2023 9:45 am
Location: Lund
Contact:

Post by micke.prag »

En intressant fråga: Vad händer vid "goto bad"?
Krashar man ett BSD-system om vi utvecklar fler produkter?
Micke Prag
Software
Telldus Technologies
louie
Posts: 14
Joined: Fri Mar 17, 2023 9:45 am

Post 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
mayday
Posts: 2
Joined: Fri Mar 17, 2023 9:45 am

OpenBSD också....

Post 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
mayday
Posts: 2
Joined: Fri Mar 17, 2023 9:45 am

Post by mayday »

Man behöver inte längra patcha OpenBSD.
(Om du inte kör 4.5 eller tidigare)
Post Reply