Homepage

  • Projekte
  • Shop
  • Forum
Erweiterte Suche
  • Schnellzugriff
    • Unbeantwortete Themen
    • Aktive Themen
    • Suche
  • FAQ
  • Anmelden
  • Registrieren
  • Foren-Übersicht
  • Suche

RS232-Schnittstelle unter Linux (Ubuntu) nutzen

Antworten
  • Druckansicht
Erweiterte Suche
13 Beiträge • Seite 1 von 1
julian-w
Beiträge: 11
Registriert: 26.02.2009, 21:26:50
Kontaktdaten:
Kontaktdaten von julian-w
Website

RS232-Schnittstelle unter Linux (Ubuntu) nutzen

  • Zitieren

Beitrag von julian-w » 26.02.2009, 21:33:46

Hallo,
ich hab das Experimentierboard zusammengebaut und funzt auch soweit alles (nebenbei: super Board :D ).
Nur unter Linux funktioniert der USB-to-RS232-Teil nicht. Unter Windows gibt es keine Probleme.

Ich hab was davon gelesen (bei meiner Suche quer durchs Internet), dass CDC bei LowSpeed-USB nicht mehr im Linux-Kernel aktiviert ist. Muss ich mir jetzt einen eigenen Kernel compilieren oder gibt es eine andere Lösung???

Ach ja, ich nutze Ubuntu 8.10 auf einem Asus eeePC 1000H.

Ich freu mich als auf eure Antworten.

MfG
Julian

Edit:
Was mich auch noch interessieren würde: weiß einer zufällig, wie ich erkennne kann, ob der Attiny gerade mit einem Computer verbunden ist?
Nach oben

thechris
Beiträge: 17
Registriert: 23.07.2008, 20:45:13
Wohnort: Krefeld

Re: RS232-Schnittstelle unter Linux (Ubuntu) nutzen

  • Zitieren

Beitrag von thechris » 14.03.2009, 19:08:37

Hi Julian,

ich habe das gleiche Problem wie du. Unter Windows funktioniert das USB-RS232 vom ATmega8 Experimentierboard einwandfrei, unter Ubuntu Jaunty überhaupt nicht. Und das obwohl der USBasp Programer "out of the box" mit avrdude funktioniert.

dmesg nach dem anschließen des Experimentierboards:

Code: Alles auswählen

[ 2973.920042] usb 5-2: new low speed USB device using uhci_hcd and address 9
[ 2974.092726] usb 5-2: configuration #1 chosen from 1 choice
[ 2976.392016] usb 5-1: new low speed USB device using uhci_hcd and address 10
[ 2976.550363] usb 5-1: config 1 interface 1 altsetting 0 endpoint 0x1 is Bulk; changing to Interrupt
[ 2976.550366] usb 5-1: config 1 interface 1 altsetting 0 endpoint 0x81 is Bulk; changing to Interrupt
[ 2976.572165] usb 5-1: configuration #1 chosen from 1 choice
[ 2976.574545] cdc_acm 5-1:1.0: ttyACM1: USB ACM device
Das Gerät wird erkannt, aber seltsamerweise als USB ACM device, was glaube ich für Modems benutzt wird. Mit cat /dev/ttyACM1 bekomme ich jedenfalls keine Ausgabe. Normalerweise müsste das Teil auch als /dev/ttyUSB0 erscheinen.

Ich bin momentan noch am googlen, wie sich dieses Problem lösen lässt. Vielleicht weiß ja einer der AVR Profis hier wo das Problem liegt oder programmiert ihr alle mit Windows? :)

Gruß

Christian
Nach oben

julian-w
Beiträge: 11
Registriert: 26.02.2009, 21:26:50
Kontaktdaten:
Kontaktdaten von julian-w
Website

Re: RS232-Schnittstelle unter Linux (Ubuntu) nutzen

  • Zitieren

Beitrag von julian-w » 14.03.2009, 23:06:48

Nunja, ich hab das Problem gelöst, indem ich einen eigenen Kernel kompaliert habe und folgendes verändert habe:

Code: Alles auswählen

1. in /usr/src/linux/drivers/usb/host/uhci-q.c:
[Column ~1050]

static int uhci_submit_bulk(struct uhci_hcd *uhci, struct urb *urb, struct uhci_qh *qh)
{
   int ret;

   /* Can't have low-speed bulk transfers */
//   if (urb->dev->speed == USB_SPEED_LOW)
//      return -EINVAL;

   if (qh->state != QH_STATE_ACTIVE)
//      qh->skel = SKEL_BULK;
      qh->skel = (urb->dev->speed == USB_SPEED_LOW ? SKEL_LS_CONTROL : SKEL_BULK);
   ret = uhci_submit_common(uhci, urb, qh);
//   if (ret == 0)
   if (ret == 0 && urb->dev->speed != USB_SPEED_LOW)
      uhci_add_fsbr(uhci, urb);
   return ret;
}

2. in /usr/src/linux/drivers/usb/core/config.c in der Funktion usb_parse_endpoint(...):
[Column ~140]

   /* Some buggy low-speed devices have Bulk endpoints, which is
    * explicitly forbidden by the USB spec.  In an attempt to make
    * them usable, we will try treating them as Interrupt endpoints.
    */
   if (to_usb_device(ddev)->speed == USB_SPEED_LOW &&
         usb_endpoint_xfer_bulk(d)) {
             dev_warn(ddev, "config %d interface %d altsetting %d "
                      "endpoint 0x%X is Bulk; this violates USB spec for "
                      "low speed devices.\n",
                      cfgno, inum, asnum, d->bEndpointAddress);
//               dev_warn(ddev, "config %d interface %d altsetting %d "
//                  "endpoint 0x%X is Bulk; changing to Interrupt\n",
//                  cfgno, inum, asnum, d->bEndpointAddress);
//               endpoint->desc.bmAttributes = USB_ENDPOINT_XFER_INT;
//               endpoint->desc.bInterval = 1;
//               if (le16_to_cpu(endpoint->desc.wMaxPacketSize) > 8)
//                       endpoint->desc.wMaxPacketSize = cpu_to_le16(8);
   } 
Quelle: http://forums.obdev.at/viewtopic.php?t= ... dd10e27bea
Nach oben

Benutzeravatar
Ulrich
Site Admin
Beiträge: 3054
Registriert: 29.02.2004, 18:12:19
Wohnort: Siegen
Kontaktdaten:
Kontaktdaten von Ulrich
Website

Re: RS232-Schnittstelle unter Linux (Ubuntu) nutzen

  • Zitieren

Beitrag von Ulrich » 15.03.2009, 00:02:21

Danke!
Nach oben

thechris
Beiträge: 17
Registriert: 23.07.2008, 20:45:13
Wohnort: Krefeld

Re: RS232-Schnittstelle unter Linux (Ubuntu) nutzen

  • Zitieren

Beitrag von thechris » 15.03.2009, 19:30:12

Genau das habe ich auch gemacht, allerdings mit der Anleitung: http://www.grapelabs.de/index.php?id=49

Ich bekomme jetzt auch eine Ausgabe, allerdings immer nur Häpchenweise. Der ATMega8 sendet z.B. "RSS Reader", in der Konsole kommt aber entweder "RSS Readr", "RSS Reade" oder sowas an. Unter Windows funktioniert es wie gesagt einwandfrei.

Eine wirkliche Lösung ist das Kernel neu kompilieren aber auch nicht, könnte man die Firmware des ATtiny nicht irgendwie verbessern? Das Arduino Development Board hat ja auch eine USB-Schnittstelle als RS-232 Ersatz und soll auch mit Linux funktionieren.
Nach oben

Benji

Re: RS232-Schnittstelle unter Linux (Ubuntu) nutzen

  • Zitieren

Beitrag von Benji » 12.03.2010, 21:59:50

Hallo

ich wollte mal fragen, ob es zu dem Thema was neues gibt? Der Betrag ist ja schon fast ein Jahr alt.

Ich habe das gleiche Problem, dass ich die USB Schnittstelle nicht unter Linux (Ubuntu) nutzen kann. Muesste denn nicht auch eine Anpassung der ATtiny Software das Problem loesen? Ich moechte eigentlich nicht anfangen, meinen Kernel umzubauen.

Danke
Benji
Nach oben

Benutzeravatar
jornbyte
Beiträge: 440
Registriert: 04.09.2008, 21:04:44

Re: RS232-Schnittstelle unter Linux (Ubuntu) nutzen

  • Zitieren

Beitrag von jornbyte » 12.03.2010, 23:27:24

Und warum möchtest du die oben beschriebene Lösung nicht verwenden und das Rad neu erfinden?
Nach oben

Thomas
Beiträge: 655
Registriert: 01.03.2004, 00:41:10

Re: RS232-Schnittstelle unter Linux (Ubuntu) nutzen

  • Zitieren

Beitrag von Thomas » 13.03.2010, 00:40:25

Benji hat geschrieben: ich wollte mal fragen, ob es zu dem Thema was neues gibt? Der Betrag ist ja schon fast ein Jahr alt.
Nein, und daran wird sich wohl auch nichts mehr ändern - schätze ich.

Osamu schreibt dazu [1]:
"Linux 2.4 recognized the device as /dev/ttyACM* (* is some numbers).
Linux 2.6 does not allow the low-speed bulk transfer. Although it works with patching the kernel, it is not recommended since it modifies the internal OS. Try this if you are really experienced on re-building kernels."


"low-speed bulk transfer" ist nicht standardkonform und wird deshalb von aktuellen BS nicht mehr unterstützt (Übrigens auch von Windows Vista/7 nicht mehr, deshalb hat Osamu einen Windows Treiber gebaut). Man müsste also die USB-Anbindung umprogrammieren und evtl. LIBusb nutzen, oder ein HID simulieren. [2]

Gruß
Thomas

P.S. Wem bei der Übertragung Zeichen verloren gehen, sollte eine aktuelle Version[1] in den Tiny füllen.

[1] http://www.recursion.jp/avrcdc/cdc-io.html
[2] http://www.obdev.at/products/vusb/index-de.html
Nach oben

Benji

Re: RS232-Schnittstelle unter Linux (Ubuntu) nutzen

  • Zitieren

Beitrag von Benji » 13.03.2010, 10:18:18

@jornbyte "If you're running Ubuntu 8.x or 9.x, this has been known to cause kernel panics, so save your changes first!" (Quelle: http://spiffie.org/kits/usb7/driver_linux.shtml)

Und ich weiss nicht, ob ich sowas auf meinem Arbeitsrechner haben will, sorry. Vorallem sieht die Loesung nicht nach einem Rad aus sondern nach einem Rechteck. Du kommst auch den Berg runter, doch nen Rad waere die richtige Loesung.

@Thomas: Ich habe mich mal bei dem V-USB Link umgesehen. Kann man denn nicht deren Version einer USB Implementierung benutzen. Ich habe dort keine Hinweise gefunden, dass sie auch solche Probleme haben.

LG
Benji
Nach oben

Thomas
Beiträge: 655
Registriert: 01.03.2004, 00:41:10

Re: RS232-Schnittstelle unter Linux (Ubuntu) nutzen

  • Zitieren

Beitrag von Thomas » 13.03.2010, 14:31:05

Benji hat geschrieben:Ich habe mich mal bei dem V-USB Link umgesehen. Kann man denn nicht deren Version einer USB Implementierung benutzen. Ich habe dort keine Hinweise gefunden, dass sie auch solche Probleme haben.
Wirklich? Osamu verwendet auch V-USB in einer früheren Version. Seine Implementierung ist nicht fehlerhaft, sondern die verwendete "Übertragungsart" funktioniert in neuen BS ganz absichtlich nicht mehr. (Unter Windows mit seinem Treiber ja doch noch) V-USB kann man aber auch auf andere Weise verwenden, nur bekommt man eben keinen virtuellen COM-Port und muss eine eigene Anwendung gegen z.B. LIBusb Programmieren.

Hier kannst du mal nachlesen: (Osamu verwendet die CDC device class)
http://vusb.wikidot.com/usb-device-classes

Also, um das unter Linux zum laufen zu bekommen ist das Patchen und Kompilieren des 2.6er Kernel noch am einfachsten, leider.

EDIT:
27.10.2010: Seit einiger Zeit können aktuelle Kernel das wieder OHNE Patch ;-)
Nach oben

Benji

Re: RS232-Schnittstelle unter Linux (Ubuntu) nutzen

  • Zitieren

Beitrag von Benji » 16.03.2010, 22:33:30

Also da mir die Sache mit Kernel umschreiben immernochnicht gefaellt. habe ich jetzt einfach mal ein Board gemacht, das genau auf den Sockel des ATtiny passt. Es nutzt dessen PINS und hat einen FT232 drauf, der USB zu seriell umsetzt. Zusaetzlich halt noch das ganze Zeug, was drauf muss (Konsensatoren, Widerstaende und Lichtchen (wichtig)). Mal schauen, ob ich alles richtig gemacht habe (ist mein erstes Board).

LG Benji
Nach oben

Benji

Re: RS232-Schnittstelle unter Linux (Ubuntu) nutzen

  • Zitieren

Beitrag von Benji » 06.05.2010, 14:25:09

Also der Adapter funktioniert. In den Anhang habe ich mal die Eagle Dateien gepackt und noch ein Bild (das sehr schlecht ist, da ich nur eine Webcam da hatte). Man muss noch zusaetzlich die Bauteile R1,R2,R3 sowie D1, D2 ausloeten und fuer R1 und R2 eine Bruecke einsetzen. Damit funktioniert es wunderbar.

Lg
Benji
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Nach oben

Benutzeravatar
Ulrich
Site Admin
Beiträge: 3054
Registriert: 29.02.2004, 18:12:19
Wohnort: Siegen
Kontaktdaten:
Kontaktdaten von Ulrich
Website

Re: RS232-Schnittstelle unter Linux (Ubuntu) nutzen

  • Zitieren

Beitrag von Ulrich » 07.05.2010, 16:15:17

Danke Benji!
Nach oben

Antworten
  • Druckansicht

13 Beiträge • Seite 1 von 1

Zurück zu „ATmega8/88/168/328 Experimentierboard“



  • Foren-Übersicht
  • Alle Zeiten sind UTC+02:00
  • Alle Cookies löschen

Powered by phpBB® Forum Software © phpBB Limited

Deutsche Übersetzung durch phpBB.de

Datenschutz | Nutzungsbedingungen

 

 

sitemap  |    |  datenschutz   |  impressum