linux-can.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Setting bitrate from user-space application
@ 2015-11-25 14:02 Guillaume Picquet
  2015-11-25 14:24 ` Misra Pankaj Kumar (RBEI/EEA2)
  2015-11-25 14:58 ` Marc Kleine-Budde
  0 siblings, 2 replies; 10+ messages in thread
From: Guillaume Picquet @ 2015-11-25 14:02 UTC (permalink / raw)
  To: linux-can

Hi all,

I prefer to ask first to those who know.

What is the 'normal' way of setting CAN bitrate from user-space 
application ?
Is there a library for that ?
If no shall I use netlink ?
if yes Can I use libnl ?

Thanks in advance for showing me where to dig internet.

regards.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* RE: Setting bitrate from user-space application
  2015-11-25 14:02 Setting bitrate from user-space application Guillaume Picquet
@ 2015-11-25 14:24 ` Misra Pankaj Kumar (RBEI/EEA2)
  2015-11-25 14:58 ` Marc Kleine-Budde
  1 sibling, 0 replies; 10+ messages in thread
From: Misra Pankaj Kumar (RBEI/EEA2) @ 2015-11-25 14:24 UTC (permalink / raw)
  To: Guillaume Picquet; +Cc: linux-can@vger.kernel.org

Hi Picquet,

You can use can-utils.

Best regards

Pankaj Kumar Misra
RBEI/EEA2  

Tel. +91(80)6783-6643 


-----Original Message-----
From: linux-can-owner@vger.kernel.org [mailto:linux-can-owner@vger.kernel.org] On Behalf Of Guillaume Picquet
Sent: Wednesday, November 25, 2015 3:02 PM
To: linux-can@vger.kernel.org
Subject: Setting bitrate from user-space application

Hi all,

I prefer to ask first to those who know.

What is the 'normal' way of setting CAN bitrate from user-space 
application ?
Is there a library for that ?
If no shall I use netlink ?
if yes Can I use libnl ?

Thanks in advance for showing me where to dig internet.

regards.
--
To unsubscribe from this list: send the line "unsubscribe linux-can" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Setting bitrate from user-space application
  2015-11-25 14:02 Setting bitrate from user-space application Guillaume Picquet
  2015-11-25 14:24 ` Misra Pankaj Kumar (RBEI/EEA2)
@ 2015-11-25 14:58 ` Marc Kleine-Budde
  2015-11-25 16:04   ` Oliver Hartkopp
  1 sibling, 1 reply; 10+ messages in thread
From: Marc Kleine-Budde @ 2015-11-25 14:58 UTC (permalink / raw)
  To: Guillaume Picquet, linux-can

[-- Attachment #1: Type: text/plain, Size: 691 bytes --]

On 11/25/2015 03:02 PM, Guillaume Picquet wrote:
> Hi all,
> 
> I prefer to ask first to those who know.
> 
> What is the 'normal' way of setting CAN bitrate from user-space 
> application ?
> Is there a library for that ?

Yes -
http://www.pengutronix.de/software/libsocketcan/download/libsocketcan-0.0.10.tar.bz2

> If no shall I use netlink ?

No - netlink parsing makes your brain hurt :D

Marc
-- 
Pengutronix e.K.                  | Marc Kleine-Budde           |
Industrial Linux Solutions        | Phone: +49-231-2826-924     |
Vertretung West/Dortmund          | Fax:   +49-5121-206917-5555 |
Amtsgericht Hildesheim, HRA 2686  | http://www.pengutronix.de   |


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 455 bytes --]

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Setting bitrate from user-space application
  2015-11-25 14:58 ` Marc Kleine-Budde
@ 2015-11-25 16:04   ` Oliver Hartkopp
  2015-11-25 16:10     ` Marc Kleine-Budde
  2015-11-25 16:17     ` Guillaume Picquet
  0 siblings, 2 replies; 10+ messages in thread
From: Oliver Hartkopp @ 2015-11-25 16:04 UTC (permalink / raw)
  To: Marc Kleine-Budde, Guillaume Picquet, linux-can

Hi Guillaume,

On 11/25/2015 03:58 PM, Marc Kleine-Budde wrote:
> On 11/25/2015 03:02 PM, Guillaume Picquet wrote:
>> Hi all,
>>
>> I prefer to ask first to those who know.
>>
>> What is the 'normal' way of setting CAN bitrate from user-space 
>> application ?
>> Is there a library for that ?
> 
> Yes -
> http://www.pengutronix.de/software/libsocketcan/download/libsocketcan-0.0.10.tar.bz2
> 
>> If no shall I use netlink ?
> 
> No - netlink parsing makes your brain hurt :D
> 

Using libsocketcan is the way to control the interfaces by an application
(which internally uses netlink).

The usual way to configure the interfaces system wide is the 'ip' tool from
the iproute2 package which comes with your preferred Linux distribution.

The way to configure CAN interfaces with 'ip' is described here:

https://www.kernel.org/doc/Documentation/networking/can.txt (see chapter 6.5)

E.g. you can use this script in Debian/Ubuntu setups then:

https://github.com/linux-can/can-misc/blob/master/etc/can_if

Regards,
Oliver

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Setting bitrate from user-space application
  2015-11-25 16:04   ` Oliver Hartkopp
@ 2015-11-25 16:10     ` Marc Kleine-Budde
  2015-11-25 16:17     ` Guillaume Picquet
  1 sibling, 0 replies; 10+ messages in thread
From: Marc Kleine-Budde @ 2015-11-25 16:10 UTC (permalink / raw)
  To: Oliver Hartkopp, Guillaume Picquet, linux-can

[-- Attachment #1: Type: text/plain, Size: 948 bytes --]

On 11/25/2015 05:04 PM, Oliver Hartkopp wrote:
> Using libsocketcan is the way to control the interfaces by an application
> (which internally uses netlink).
> 
> The usual way to configure the interfaces system wide is the 'ip' tool from
> the iproute2 package which comes with your preferred Linux distribution.
> 
> The way to configure CAN interfaces with 'ip' is described here:
> 
> https://www.kernel.org/doc/Documentation/networking/can.txt (see chapter 6.5)
> 
> E.g. you can use this script in Debian/Ubuntu setups then:
> 
> https://github.com/linux-can/can-misc/blob/master/etc/can_if

'seems we need systemd-networkd support for CAN.

Marc

-- 
Pengutronix e.K.                  | Marc Kleine-Budde           |
Industrial Linux Solutions        | Phone: +49-231-2826-924     |
Vertretung West/Dortmund          | Fax:   +49-5121-206917-5555 |
Amtsgericht Hildesheim, HRA 2686  | http://www.pengutronix.de   |


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 455 bytes --]

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Setting bitrate from user-space application
  2015-11-25 16:04   ` Oliver Hartkopp
  2015-11-25 16:10     ` Marc Kleine-Budde
@ 2015-11-25 16:17     ` Guillaume Picquet
  2015-11-28  2:28       ` Tom Evans
  2015-12-23 14:03       ` Guillaume Picquet
  1 sibling, 2 replies; 10+ messages in thread
From: Guillaume Picquet @ 2015-11-25 16:17 UTC (permalink / raw)
  To: Oliver Hartkopp, Marc Kleine-Budde, linux-can



Le 25/11/2015 17:04, Oliver Hartkopp a écrit :
> Hi Guillaume,
>
> On 11/25/2015 03:58 PM, Marc Kleine-Budde wrote:
>> On 11/25/2015 03:02 PM, Guillaume Picquet wrote:
>>> Hi all,
>>>
>>> I prefer to ask first to those who know.
>>>
>>> What is the 'normal' way of setting CAN bitrate from user-space
>>> application ?
>>> Is there a library for that ?
>> Yes -
>> http://www.pengutronix.de/software/libsocketcan/download/libsocketcan-0.0.10.tar.bz2
>>
>>> If no shall I use netlink ?
>> No - netlink parsing makes your brain hurt :D
>>
> Using libsocketcan is the way to control the interfaces by an application
> (which internally uses netlink).
I've downloaded it, cross-compile it and made a test program.
I read bitrate successfully.

>
> The usual way to configure the interfaces system wide is the 'ip' tool from
> the iproute2 package which comes with your preferred Linux distribution.
On the platform I'am working it's done in a rc script at start-up
>
> The way to configure CAN interfaces with 'ip' is described here:
>
> https://www.kernel.org/doc/Documentation/networking/can.txt (see chapter 6.5)
>
> E.g. you can use this script in Debian/Ubuntu setups then:
>
> https://github.com/linux-can/can-misc/blob/master/etc/can_if
>
> Regards,
> Oliver
Regards,

guillaume

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Setting bitrate from user-space application
  2015-11-25 16:17     ` Guillaume Picquet
@ 2015-11-28  2:28       ` Tom Evans
  2015-12-23 12:07         ` Holger Schurig
  2015-12-23 14:03       ` Guillaume Picquet
  1 sibling, 1 reply; 10+ messages in thread
From: Tom Evans @ 2015-11-28  2:28 UTC (permalink / raw)
  To: Guillaume Picquet, Oliver Hartkopp, Marc Kleine-Budde, linux-can

On 26/11/2015 3:17 AM, Guillaume Picquet wrote:
> Le 25/11/2015 17:04, Oliver Hartkopp a écrit :
>> Hi Guillaume,
>>
>> On 11/25/2015 03:58 PM, Marc Kleine-Budde wrote:
>>> On 11/25/2015 03:02 PM, Guillaume Picquet wrote:
>>>> Hi all,
>>>>
>>>> I prefer to ask first to those who know.
>>>>
>>>> What is the 'normal' way of setting CAN bitrate from user-space
>>>> application ?

The "abnormal" way I do it is basically:

     char *pName = (a_eDevice == CAN_BUS_CAN_0) ? "can0" : "can1";
     sprintf(vBuf,
             "/usr/local/sbin/canconfig %s stop > /dev/null ; "
             "/usr/local/sbin/canconfig %s bitrate %d > /dev/null ; "
             "/usr/local/sbin/canconfig %s start > /dev/null\n",
             pName, pName, a_nKbaud * 1000, pName);
             nRc = system(vBuf);

Or if using Freescale's 2.6.35 driver, "ifconfig can0 down/up" and
"echo 500000 > /sys/class/devices/platform/FlexCAN.0/bitrate" in the 
above "system()" call.

I realise the above may be horrible, but I'd like some more information 
on why it might be bad.

Tom


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Setting bitrate from user-space application
  2015-11-28  2:28       ` Tom Evans
@ 2015-12-23 12:07         ` Holger Schurig
  0 siblings, 0 replies; 10+ messages in thread
From: Holger Schurig @ 2015-12-23 12:07 UTC (permalink / raw)
  To: Tom Evans
  Cc: Guillaume Picquet, Oliver Hartkopp, Marc Kleine-Budde, linux-can

> Or if using Freescale's 2.6.35 driver, "ifconfig can0 down/up" and
> "echo 500000 > /sys/class/devices/platform/FlexCAN.0/bitrate" in the
> above "system()" call.
>
> I realise the above may be horrible, but I'd like some more
> information on why it might be bad.

a) it will only work with this specific FlexCAN driver from this proprietary kernel
b) if you ever are forced to upgrade to, say, 4.4, it won't work

Whereas "ip link set can0 type can bitrate 500000" will work with any card (even USB dongles that you might use as test equipment), and with any kernel.

As an added bonus, it can even set things like "restart-ms" :-)

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Setting bitrate from user-space application
  2015-11-25 16:17     ` Guillaume Picquet
  2015-11-28  2:28       ` Tom Evans
@ 2015-12-23 14:03       ` Guillaume Picquet
  2015-12-23 14:10         ` Marc Kleine-Budde
  1 sibling, 1 reply; 10+ messages in thread
From: Guillaume Picquet @ 2015-12-23 14:03 UTC (permalink / raw)
  To: Oliver Hartkopp, Marc Kleine-Budde, linux-can

Hi all!

A status update, thanks to libsocketcan I am able to get and set bitrate.
remarks:
Before setting bitrate a stop must be performed.
I use poll() on CAN socket and it returns and set errno to ENETDOWN 
during the stop but sockets stay valid. (no need to close and reopen).
I Suppose it is normal behaviour, right ?

Thanks for support.

Regards.

Le 25/11/2015 17:17, Guillaume Picquet a écrit :
>
>
> Le 25/11/2015 17:04, Oliver Hartkopp a écrit :
>> Hi Guillaume,
>>
>> On 11/25/2015 03:58 PM, Marc Kleine-Budde wrote:
>>> On 11/25/2015 03:02 PM, Guillaume Picquet wrote:
>>>> Hi all,
>>>>
>>>> I prefer to ask first to those who know.
>>>>
>>>> What is the 'normal' way of setting CAN bitrate from user-space
>>>> application ?
>>>> Is there a library for that ?
>>> Yes -
>>> http://www.pengutronix.de/software/libsocketcan/download/libsocketcan-0.0.10.tar.bz2 
>>>
>>>
>>>> If no shall I use netlink ?
>>> No - netlink parsing makes your brain hurt :D
>>>
>> Using libsocketcan is the way to control the interfaces by an 
>> application
>> (which internally uses netlink).
> I've downloaded it, cross-compile it and made a test program.
> I read bitrate successfully.
>
>>
>> The usual way to configure the interfaces system wide is the 'ip' 
>> tool from
>> the iproute2 package which comes with your preferred Linux distribution.
> On the platform I'am working it's done in a rc script at start-up
>>
>> The way to configure CAN interfaces with 'ip' is described here:
>>
>> https://www.kernel.org/doc/Documentation/networking/can.txt (see 
>> chapter 6.5)
>>
>> E.g. you can use this script in Debian/Ubuntu setups then:
>>
>> https://github.com/linux-can/can-misc/blob/master/etc/can_if
>>
>> Regards,
>> Oliver
> Regards,
>
> guillaume
> -- 
> To unsubscribe from this list: send the line "unsubscribe linux-can" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Setting bitrate from user-space application
  2015-12-23 14:03       ` Guillaume Picquet
@ 2015-12-23 14:10         ` Marc Kleine-Budde
  0 siblings, 0 replies; 10+ messages in thread
From: Marc Kleine-Budde @ 2015-12-23 14:10 UTC (permalink / raw)
  To: Guillaume Picquet, Oliver Hartkopp, linux-can

[-- Attachment #1: Type: text/plain, Size: 1013 bytes --]

On 12/23/2015 03:03 PM, Guillaume Picquet wrote:
> A status update, thanks to libsocketcan I am able to get and set bitrate.

\o/

> remarks:
> Before setting bitrate a stop must be performed.

Yes - this way you can be sure that the new frames are send with the new
bitrate. Also think of a multi application CAN environment.

> I use poll() on CAN socket and it returns and set errno to ENETDOWN 
> during the stop but sockets stay valid. (no need to close and reopen).
> I Suppose it is normal behaviour, right ?

ENETDOWN is expected behaviour. That you don't need to close and reopen
the socket is.....nice, isn't it :) Let's say it's implementation
defined behaviour. Better close and reopen the socket.

Marc

-- 
Pengutronix e.K.                  | Marc Kleine-Budde           |
Industrial Linux Solutions        | Phone: +49-231-2826-924     |
Vertretung West/Dortmund          | Fax:   +49-5121-206917-5555 |
Amtsgericht Hildesheim, HRA 2686  | http://www.pengutronix.de   |


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 455 bytes --]

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2015-12-23 14:11 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-11-25 14:02 Setting bitrate from user-space application Guillaume Picquet
2015-11-25 14:24 ` Misra Pankaj Kumar (RBEI/EEA2)
2015-11-25 14:58 ` Marc Kleine-Budde
2015-11-25 16:04   ` Oliver Hartkopp
2015-11-25 16:10     ` Marc Kleine-Budde
2015-11-25 16:17     ` Guillaume Picquet
2015-11-28  2:28       ` Tom Evans
2015-12-23 12:07         ` Holger Schurig
2015-12-23 14:03       ` Guillaume Picquet
2015-12-23 14:10         ` Marc Kleine-Budde

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).