Socket-can, no buffer space available

casavio
Posts: 13
Joined: 05.12.2018, 19:29

Socket-can, no buffer space available

Post by casavio » 08.09.2019, 21:08

Liebe Kollegen,

ich habe auf einem älteren RaspberryPi mit frischem Betriebssystem "Buster" ein aktuelles Rocrailimage (15937) installiert.

Als Zentrale ist bei rocrail "mbus" mit socket-can, can0, vereinbart.

Mit einem can-Board aus Fernost, das ich noch liegen hatte, will ich auf eine Märklin Gleisbox zugreifen (siehe Bilder).

Das can-Board hat einen mcp2515 (20 MHz) und wird auch vom RaspberryPi erkannt.

Mit "candump can0" werden zunächst auch can-Messages von rocrail angezeigt, doch nach kurzer Zeit kommt die Meldung

writeCAN failed sh=5 frame=47 [105] [No buffer space available]. Kann man diesen "Buffer space irgendwo vergrößern ?

Den Trace findet ihr im "nohup.out". Im "no buffer space" die Ausgabe der console des Raspberry.

Vielleicht können mir die Experten hier im Forum weiterhelfen,

Gruß Dieter
You do not have the required permissions to view the files attached to this post.

rjversluis
Site Admin
Posts: 42378
Joined: 10.04.2006, 08:48
Location: Speyer, Germany
Contact:

Re: Socket-can, no buffer space available

Post by rjversluis » 09.09.2019, 06:49

Moin Dieter,

der Fehler kommt aus Raspbian, also da kann ich in Rocrail nichts ändern.

bertc3p0
Posts: 327
Joined: 25.04.2012, 20:19
Location: near Frankfurt Germany

Re: Socket-can, no buffer space available

Post by bertc3p0 » 09.09.2019, 08:19

Hallo Dieter,

bitte nutze candump so, das auch Error-Frames angezeigt werden:

Code: Select all

candump -tA -axe any,0:0,#FFFFFFFF
Und gib bitte die Statistiken aus:

Code: Select all

ip -s -d link show can0
Hast Du ein (Kernel-)Update durchgeführt ?

Gruß

Gerd

casavio
Posts: 13
Joined: 05.12.2018, 19:29

Re: Socket-can, no buffer space available

Post by casavio » 09.09.2019, 19:35

Hallo Gerd und Rob,
vielen Dank für Eure Antworten. Ich habe jetzt verfahren wie von Gerd vorgeschlagen, das Ergebnis im Anhang.
Zu ergänzen ist, dass nach dem Starten von Rocrail einige can - messages gesendet werden und dann ist plötzlich Schluss.
(Auf dem Board leuchten dann die TX und RX Leds dauerhaft). Mir sagt der Konsolenausdruck allerdings nicht viel, vlt. den Experten ?
Und ja, ein update von Raspian habe ich gemacht.

Gruß Dieter
You do not have the required permissions to view the files attached to this post.

casavio
Posts: 13
Joined: 05.12.2018, 19:29

Re: Socket-can, no buffer space available

Post by casavio » 09.09.2019, 19:38

Noch ein Nachtrag:

Ich benutze einen Raspberry der ersten Generation, ist der evtl. zu langsam ?

Gruß Dieter

bertc3p0
Posts: 327
Joined: 25.04.2012, 20:19
Location: near Frankfurt Germany

Re: Socket-can, no buffer space available

Post by bertc3p0 » 09.09.2019, 20:45

Hallo Dieter,

um Deine ursprüngliche Frage zu beantworten - die Queue (Write Buffer) kannst Du vergrößen:

Code: Select all

sudo ip link set can0 qlen 100
Aber der Default Wert 10 sollten mehr als ausreichend sein. Nachdem Du die Fehler:

Code: Select all

writeCAN failed sh=5 frame=47 [105] [No buffer space available]
in Rocrail gesehen hast, siehst Du da noch eingehende CAN Meldungen bei candump ?
casavio wrote:
09.09.2019, 19:38
Noch ein Nachtrag:

Ich benutze einen Raspberry der ersten Generation, ist der evtl. zu langsam ?
das vermute ich. Aber dazu müsste man Deine Config kennen und die Last wenn der Fehler auftritt. Wie sieht den Deine /boot/config.txt aus ?

Gruß

Gerd

casavio
Posts: 13
Joined: 05.12.2018, 19:29

Re: Socket-can, no buffer space available

Post by casavio » 10.09.2019, 20:22

Hallo Gerd,

vielen Dank für deine Unterstützung.

Wenn ich die Fehlermeldung "write can failed ..." in Rocview sehe, kommt auch in candump keine can - message mehr.
Nur durch ein reboot des Raspberrys kann ich dann mit candump wieder kurzzeitig can - messages sehen.

Auch die Vergrößerung des buffers durch "sudo ip link set can0 qlen 100" brachte keine Verbesserung.

Der Vollständigkeit halber noch die config.txt als Anlage. Es sind nur

dtparam=spi=on
dtoverlay=mcp2515-can0,oscillator=20000000,interrupt=25
dtoverlay=spi-bcm2835-overlay

nicht auskommentiert. (20 Mhz wg dem Quarz auf dem Board)
Ich denke, ich teste das nochmal mit einem neueren Raspberry.

Gruß Dieter
You do not have the required permissions to view the files attached to this post.

bertc3p0
Posts: 327
Joined: 25.04.2012, 20:19
Location: near Frankfurt Germany

Re: Socket-can, no buffer space available

Post by bertc3p0 » 12.09.2019, 07:50

Hallo Dieter,

ich habe Dir eine Nachricht gesendet. Schau bitte mal in Deinen Privaten Nachrichten nach.

Gruß

Gerd

rjversluis
Site Admin
Posts: 42378
Joined: 10.04.2006, 08:48
Location: Speyer, Germany
Contact:

Re: Socket-can, no buffer space available

Post by rjversluis » 12.09.2019, 11:15

bertc3p0 wrote:
12.09.2019, 07:50
ich habe Dir eine Nachricht gesendet. Schau bitte mal in Deinen Privaten Nachrichten nach.
das ist für Mitlesern ein wenig frustrierend; Wieso ist das jetzt geheim?
In Prinzip kann man dann dieses Thema löschen.

bertc3p0
Posts: 327
Joined: 25.04.2012, 20:19
Location: near Frankfurt Germany

Re: Socket-can, no buffer space available

Post by bertc3p0 » 12.09.2019, 11:58

Hallo Rob,
rjversluis wrote:
12.09.2019, 11:15
bertc3p0 wrote:
12.09.2019, 07:50
ich habe Dir eine Nachricht gesendet. Schau bitte mal in Deinen Privaten Nachrichten nach.
das ist für Mitlesern ein wenig frustrierend; Wieso ist das jetzt geheim?
In Prinzip kann man dann dieses Thema löschen.
das soll nicht geheim sein. Aber das geht so tief in die Eingeweide von Raspbian/Linux das ich die Befürchtung habe, das einige Leute abgeschreckt werden. Sei es drum, hier die PN, die ich Dieter gesendet habe:
Hallo Dieter,

falls Du nochmals den Fehler reproduzieren kannst würde ich Dich bitten, folgendes zu machen:

Code: Select all

sudo apt-get install device-tree-compiler wiringpi
# candump starten in einem Fenster
candump -tA -axe any,0:0,#FFFFFFFF
# weiters Paket senden und Antwort erzwingen
cansend can0 00300300#
und im Fehlerzustand zusätzlich den Output von:

Code: Select all

dtc -Wno-interrupts_property -I dtb -O dts /boot/overlays/mcp2515-can0.dtbo
gpio readall 
zu zusenden.

Hintergrund der Geschichte ist ein Problem des Treibers in Zusammenhang mit dem IRQ:
https://github.com/pelwell/linux/commit ... 6b6b88022c
Ich vermute das der Interrupt PIN bei Dir auf Low verharrt und der Treiber damit durcheinander kommt. Der Patch oben
sollte bei Dir vorhanden sein; mit dem o.g. Befehlen können wir schauen, ob der Treiber bzw. Device-Tree Overlay korrekt gepatch wurde.
Nachtrag: Falls der PIN 22 (GPIO 25) im Fehlerfall (write buffer error/ keine CAN Nachrichten mehr) auf IN/0 steht, dann ist das ein Indiz das der Treiber bzw. DTO nicht angepasst ist.

Gruß

Gerd

casavio
Posts: 13
Joined: 05.12.2018, 19:29

Re: Socket-can, no buffer space available

Post by casavio » 13.09.2019, 06:09

Guten Morgen Gerd,

habe deine Nachricht erst soeben gelesen.
Gestern habe ich das Ganze mit einem neuen Raspberry 3+ durchgeführt und im Prinzip das gleiche Ergebnis erhalten wie mit dem alten Raspberry. D. h., an der mangelnden Leistungsfähigkeit des alten Raspberrys kanns dann eigentlich nicht liegen.

Den Interrupt Pin hatte ich auch schon im Verdacht und habe das dann mit einem anderen Pin, aber leider ohne Erfolg getestet.

Der neue Ansatz, den du mir geschickt hast, hört sich vielversprechend an, leider komme ich heute nicht dazu, das zu testen.
Am WE werde ich deinen Vorschlag dann testen und hier berichten,

nochmals vielen Dank für deine Unterstützung,

Gruß Dieter

casavio
Posts: 13
Joined: 05.12.2018, 19:29

Re: Socket-can, no buffer space available

Post by casavio » 14.09.2019, 08:50

Guten Morgen Gerd,

habe deine Vorschläge umgesetzt und die entsprechenden Konsolenausgaben in Dateien beigefügt. Mir sagt das nicht mehr viel (abgesehen von gpio_readall).
Vielleicht kannst Du noch was mit anfangen,

Gruß Dieter
You do not have the required permissions to view the files attached to this post.

bertc3p0
Posts: 327
Joined: 25.04.2012, 20:19
Location: near Frankfurt Germany

Re: Socket-can, no buffer space available

Post by bertc3p0 » 14.09.2019, 10:33

Guten Morgen Dieter,
casavio wrote:
14.09.2019, 08:50
Guten Morgen Gerd,

habe deine Vorschläge umgesetzt und die entsprechenden Konsolenausgaben in Dateien beigefügt. Mir sagt das nicht mehr viel (abgesehen von gpio_readall).
Vielleicht kannst Du noch was mit anfangen,
der Reihe nach - das sieht ok aus:

Code: Select all

pi@raspberrypi:~ $ gpio readall
 +-----+-----+---------+------+---+---Pi 3B+-+---+------+---------+-----+-----+
 | BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM |
 +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
 |   9 |  13 |    MISO | ALT0 | 0 | 21 || 22 | 1 | IN   | GPIO. 6 | 6   | 25  |
PIN22 (GPIO25) ist auf 1 - kein anliegender Interrupt.

Der Device Tree Overlay:

Code: Select all

				compatible = "microchip,mcp2515";
				pinctrl-names = "default";
				pinctrl-0 = < 0x01 >;
				spi-max-frequency = < 0x989680 >;
				interrupt-parent = < 0xffffffff >;
				interrupts = < 0x19 0x08 >;
Wichtig ist hier der Eintrag Interrupts: 0x19 -> IRQ für GPIO25 und 0x08 -> IRQF_TRIGGER_LOW. Das passt.

Aber Du hast einige Probleme bei der Anbindung des MCP2515 (siehe candump). Hier taucht ein SFF (11 Bit z.B. CAN ID 565) und CAN Remote Requests auf. Das gibt es bei Märklin CAN nicht. Zudem sind einige CAN IDs so nicht im Protokoll definiert. Das lässt vermuten, das die (geschätzte) 50cm SPI-Anbindung nicht sauber ist. Ein Flachbankkabel ist auch für eine Übertragung mit 10MHz ohne spezielle Treiber nicht geeignet.
Außerdem sieht man noch Errorframes mit Bus-Off Meldungen. Entweder existiert auch hier ein Problem auf den CAN-Bus Seite oder die Termminierung (120 Ohm) fehlt.

Kurz: Entweder sorgst Du für eine bessere, bei SPI sprich kürzere, Verbakeung oder Du sparst Dir die Mühe und investiert gleich ein paar Euro für eine richtige Platine. Die gibt es bei mir -> Email.

Gruß

Gerd
Last edited by bertc3p0 on 14.09.2019, 13:29, edited 1 time in total.

Liviu M
Posts: 949
Joined: 03.12.2011, 20:44

Re: Socket-can, no buffer space available

Post by Liviu M » 14.09.2019, 13:00

Hallo Dieter,

funktioniert dein CAN-Modul ohne MCP2551?

Liviu

casavio
Posts: 13
Joined: 05.12.2018, 19:29

Re: Socket-can, no buffer space available

Post by casavio » 14.09.2019, 14:06

Hallo Liviu,

Der transceiver mcp2551 kann nur optional auf das Board gelötet werden.
Fest auf dem Board ist ein anderer can transceiver sn65hvd installiert (3,3 V).

Gruß Dieter

Post Reply

Return to “MBUS (DE)”