Issue with CAN cape

465 views
Skip to first unread message

frudak....@gmail.com

unread,
Mar 30, 2015, 11:44:21 AM3/30/15
to beagl...@googlegroups.com
Hi there!

I don't know how to get BBB's DCAN1 working, though I've been striving for quite a long time.

I installed the OS from a Debian image available at http://beagleboard.org/ and followed the guide http://dev.ardupilot.com/wiki/building-the-code/building-for-beaglebone-black-on-linux/ to make the kernel RT-Preempt:

root@beaglebone:~# uname -a
Linux beaglebone 3.8.13-rt9-00899-g3d8f2b1 #1 SMP PREEMPT Sat Jan 31 12:22:12 CET 2015 armv7l GNU/Linux

To work with DCAN1, I also followed the guide http://www.embedded-things.com/bbb/enable-canbus-on-the-beaglebone-black/ using the suggested device tree overlay:

root@beaglebone:~# modprobe can
root@beaglebone:~# modprobe can-dev
root@beaglebone:~# modprobe can-raw
root@beaglebone:~# echo BB-DCAN1 > $SLOTS
root@beaglebone:~# cat $SLOTS
 0: 54:PF---
 1: 55:PF---
 2: 56:PF---
 3: 57:PF---
 4: ff:P-O-L Bone-LT-eMMC-2G,00A0,Texas Instrument,BB-BONE-EMMC-2G
 5: ff:P-O-- Bone-Black-HDMI,00A0,Texas Instrument,BB-BONELT-HDMI
 6: ff:P-O-- Bone-Black-HDMIN,00A0,Texas Instrument,BB-BONELT-HDMIN
 7: ff:P-O-L Override Board Name,00A0,Override Manuf,BB-DCAN1

root@beaglebone:~# /sbin/ip link set can0 up type can bitrate 500000
root@beaglebone:~# ifconfig can0 up
root@beaglebone:~# ifconfig can0
can0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          UP NOARP  MTU:16  Metric:1
          RX packets:3 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:10
          RX bytes:24 (24.0 B)  TX bytes:0 (0.0 B)
          Interrupt:71

Pins seem to be muxed correctly:

root@beaglebone:~# cat $PINS | grep 984
pin 97 (44e10984) 00000032 pinctrl-single
root@beaglebone:~# cat $PINS | grep 980
pin 96 (44e10980) 00000012 pinctrl-single

Now, as I run a simple cansend-candump test on can0, candump doesn't get anything. Is there anyone who can help me out?

Thank you

Frudak

Robert Nelson

unread,
Mar 30, 2015, 12:08:32 PM3/30/15
to Beagle Board
Well that "3.8.13" "RT" kernel isn't maintained anymore. Other then
Can0 what else do you need?

As you could just grab the latest image: http://beagleboard.org/latest-images

then install the "3.14.x RT" kernel:

sudo apt-get update ; sudo apt-get install
linux-image-3.14.35-ti-rt-r56 ; sudo reboot

(right now i only have can1 built by default:

dtb=am335x-boneblack-can1.dtb

You can use dtb-rebuilder to enable can0..

Regards,

--
Robert Nelson
https://rcn-ee.com/

frudak....@gmail.com

unread,
Mar 31, 2015, 10:33:26 AM3/31/15
to beagl...@googlegroups.com
Thank you very much for the answer!

By the truth, I need to be able to use also other interfaces (GPIOs, PWM, Analog Input, I2C, SPI, UART, USB, Ethernet).
I followed your suggestions (installed 3.14 RT kernel):
root@beaglebone:~# uname -a
Linux beaglebone 3.14.35-ti-rt-r56 #1 SMP PREEMPT Sun Mar 29 01:13:05 UTC 2015 armv7l GNU/Linux

... but I have the following problems:
1) with SocketCAN. Giving the commands:
root@beaglebone:~# /sbin/ip set link can1 type can bitrate 500000
root@beaglebone:~# ifconfig can1 up
I enable can1:
root@beaglebone:~# ifconfig can1
can1      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 
          UP RUNNING NOARP  MTU:16  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0

          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:10
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
          Interrupt:71
Now I just perform the candump - cansend (can-utils installed on BBB from https://github.com/digitalbond/canbus-beaglebone) test on can1 but cansend doesn't send anything.

2) New device tree overlay management. I cannot see any longer the slots file for pin muxing (before it was located in the directory /sys/devices/bone_capemgr.9):
root@beaglebone:~# find / -name "bone_capemgr*"
root@beaglebone:~# find / -name "slots"
/sys/module/snd/parameters/slots
root@beaglebone:~#

So far, I have always handled pins with device tree overlays, by taking the available ones (placed in /lib/firmware) or creating new ones. Do I need to adapt all my existing programs according to the new management?

3) Ethernet-over-USB is no longer working with kernel 3.14: the interface usb0 doesn't come up any more with ifconfig.

4) I went back to 3.8 kernel (by modifying properly uname_r variable in uEnv.txt and rebooting) and then I tried to return to 3.14 (always by modifying uEnv.txt and rebooting), but the system doesn't boot.

Do you have some more advice?

Thank you

Frudak

Robert Nelson

unread,
Mar 31, 2015, 10:39:10 AM3/31/15
to Beagle Board
On Tue, Mar 31, 2015 at 9:33 AM, <frudak....@gmail.com> wrote:
> Thank you very much for the answer!
>
> By the truth, I need to be able to use also other interfaces (GPIOs, PWM,
> Analog Input, I2C, SPI, UART, USB, Ethernet).
> I followed your suggestions (installed 3.14 RT kernel):
> root@beaglebone:~# uname -a
> Linux beaglebone 3.14.35-ti-rt-r56 #1 SMP PREEMPT Sun Mar 29 01:13:05 UTC
> 2015 armv7l GNU/Linux

Did you change dtb in /boot/uEnv.txt ?

dtb=am335x-black-can1.dtb


> ... but I have the following problems:
> 1) with SocketCAN. Giving the commands:
> root@beaglebone:~# /sbin/ip set link can1 type can bitrate 500000
> root@beaglebone:~# ifconfig can1 up
> I enable can1:
> root@beaglebone:~# ifconfig can1
> can1 Link encap:UNSPEC HWaddr
> 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
> UP RUNNING NOARP MTU:16 Metric:1
> RX packets:0 errors:0 dropped:0 overruns:0 frame:0
> TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
> collisions:0 txqueuelen:10
> RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
> Interrupt:71
> Now I just perform the candump - cansend (can-utils installed on BBB from
> https://github.com/digitalbond/canbus-beaglebone) test on can1 but cansend
> doesn't send anything.

The peripheral is enabled, but the pinmux is not set by default..


> 2) New device tree overlay management. I cannot see any longer the slots
> file for pin muxing (before it was located in the directory
> /sys/devices/bone_capemgr.9):
> root@beaglebone:~# find / -name "bone_capemgr*"
> root@beaglebone:~# find / -name "slots"
> /sys/module/snd/parameters/slots
> root@beaglebone:~#
>
> So far, I have always handled pins with device tree overlays, by taking the
> available ones (placed in /lib/firmware) or creating new ones. Do I need to
> adapt all my existing programs according to the new management?

capemgr = 3.8.x

> 3) Ethernet-over-USB is no longer working with kernel 3.14: the interface
> usb0 doesn't come up any more with ifconfig.

odd.. cat /etc/dogtag


> 4) I went back to 3.8 kernel (by modifying properly uname_r variable in
> uEnv.txt and rebooting) and then I tried to return to 3.14 (always by
> modifying uEnv.txt and rebooting), but the system doesn't boot.

cat /etc/dogtag

frudak....@gmail.com

unread,
Mar 31, 2015, 11:25:56 AM3/31/15
to beagl...@googlegroups.com

On Tuesday, March 31, 2015 at 4:39:10 PM UTC+2, RobertCNelson wrote:
On Tue, Mar 31, 2015 at 9:33 AM,  <frudak....@gmail.com> wrote:
> Thank you very much for the answer!
>
> By the truth, I need to be able to use also other interfaces (GPIOs, PWM,
> Analog Input, I2C, SPI, UART, USB, Ethernet).
> I followed your suggestions (installed 3.14 RT kernel):
> root@beaglebone:~# uname -a
> Linux beaglebone 3.14.35-ti-rt-r56 #1 SMP PREEMPT Sun Mar 29 01:13:05 UTC
> 2015 armv7l GNU/Linux

Did you change dtb in /boot/uEnv.txt ?

dtb=am335x-black-can1.dtb

Yes, I did.

 
> ... but I have the following problems:
> 1) with SocketCAN. Giving the commands:
> root@beaglebone:~# /sbin/ip set link can1 type can bitrate 500000
> root@beaglebone:~# ifconfig can1 up
> I enable can1:
> root@beaglebone:~# ifconfig can1
> can1      Link encap:UNSPEC  HWaddr
> 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
>           UP RUNNING NOARP  MTU:16  Metric:1
>           RX packets:0 errors:0 dropped:0 overruns:0 frame:0
>           TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
>           collisions:0 txqueuelen:10
>           RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
>           Interrupt:71
> Now I just perform the candump - cansend (can-utils installed on BBB from
> https://github.com/digitalbond/canbus-beaglebone) test on can1 but cansend
> doesn't send anything.

The peripheral is enabled, but the pinmux is not set by default..

Since I had the dmesg error "bit timing not yet defined", I added the option "triple-sampling on" to ip. But I have the same problem as before.
 

> 2) New device tree overlay management. I cannot see any longer the slots
> file for pin muxing (before it was located in the directory
> /sys/devices/bone_capemgr.9):
> root@beaglebone:~# find / -name "bone_capemgr*"
> root@beaglebone:~# find / -name "slots"
> /sys/module/snd/parameters/slots
> root@beaglebone:~#
>
> So far, I have always handled pins with device tree overlays, by taking the
> available ones (placed in /lib/firmware) or creating new ones. Do I need to
> adapt all my existing programs according to the new management?

capemgr = 3.8.x

Is this an option of uEnv.txt?

> 3) Ethernet-over-USB is no longer working with kernel 3.14: the interface
> usb0 doesn't come up any more with ifconfig.

odd.. cat /etc/dogtag

root@beaglebone:~/CAN/can-utils# cat /etc/dogtag
BeagleBoard.org Debian Image 2015-03-01
 

> 4) I went back to 3.8 kernel (by modifying properly uname_r variable in
> uEnv.txt and rebooting) and then I tried to return to 3.14 (always by
> modifying uEnv.txt and rebooting), but the system doesn't boot.

cat /etc/dogtag

root@beaglebone:~/CAN/can-utils# cat /etc/dogtag
BeagleBoard.org Debian Image 2015-03-01

Regards,

--
Robert Nelson
https://rcn-ee.com/


Thank you

Frudak

benc...@gmail.com

unread,
Apr 6, 2015, 4:24:42 PM4/6/15
to beagl...@googlegroups.com
Hi Guys,

I have a similar Problem. I am trying to activate the CAN1 Bus. (P9_24 & P9_26).

With Kernel 3.8.13 I am using the bone_capemgr.9 according to http://www.embedded-things.com/bbb/enable-canbus-on-the-beaglebone-black/
It works!

But with 3.19.0 I have some problems. I just can get any signal with candump!
I used the dtb-rebuilder and commented out the two CAN1 lines:
...
 #include "am335x-peripheral-can1.dtsi"
 #include "am335x-bone-pinmux-can1.dtsi"
...

After make install,  modeprobe etc... the ifconfig of debian 3.19 and 3.13 (bone_capemgr.9) looks the same.


can0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 
          UP RUNNING NOARP  MTU:16  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0

          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:10
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
          Interrupt:159

But with 3.19 I can't get any signal. Anyone a Idea?
Thanks in advance for your help!

Benjamin
Message has been deleted

Ben F.

unread,
Sep 13, 2015, 4:49:21 AM9/13/15
to beagl...@googlegroups.com
Hi Onur, everything works now. It was a problem with the transceiver. They were not soldered properly... If you still have some problems just write me a mail or ask in detail here.
Regards,
benjamin

On Tue, Sep 1, 2015 at 11:04 AM, Onur Duran <onurr...@gmail.com> wrote:
Hi Benjamin 

I work on CAN Bus with BBB. Did  you find your problem's solution ?
I could send data to use CAN bus with BBB but i didn't see anything do you have idea? 

6 Nisan 2015 Pazartesi 23:24:42 UTC+3 tarihinde Ben F. yazdı:

--
For more options, visit http://beagleboard.org/discuss
---
You received this message because you are subscribed to a topic in the Google Groups "BeagleBoard" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/beagleboard/1T_m9uXJ8Kc/unsubscribe.
To unsubscribe from this group and all its topics, send an email to beagleboard...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply all
Reply to author
Forward
0 new messages