Connecting Beaglebone Black

Connecting Beaglebone Black

I am having some issues trying to connect my Beaglebone Black to the site. Specifically, it is hanging for the status response from the server when you are registering the device. (STATUS: /server/registration_status)


My current setup is the BBB rev A5C powered by usb cable, and also connected to a computer. Running the os it came with (Angstrom). Ethernet connected to a router, and yes it is able to ping


Here is what I did to get to the point where agent.js can be started:


> cd iotkit
> ./

./ line 33: sudo: command not found

# if not root, try to use sudo
if [[ `whoami` != "root" ]];


should see:
npm downloading lots of things
finally- done

> node agent
2014-03-19T17:05:37.252Z - info: IoT Kit Cloud Agent:  C8-A0-30-AC-DE-FE
2014-03-19T17:05:37.787Z - info: Cloud client created
Segmentation fault

will find the segfault cause a little later
copy the cloud agent number
add it to devices on

> shutdown -h now

power on the BBB & wait for it to come up

> cd iotkit
> node agent

seg fault!

problem line in agent.js:

problem line in lib/cloud.js:
var doc = msg.getRegMsg(me.deviceId, undefined, undefined, me.sensorsList);

right before var msg in lib/cloud-message.js add:"hey");

run node agent again

error: UncaughtException: Cannot call method 'info' of undefined

add right under var os:
logger = require('./logger').init();

remove the me. infront of logger

one of the variables in msg probably doesn’t exist on the BBB, we have to find it.

      "hardware_vendor": os.cpus()[0].model,
      "hardware_model": os.platform(),
      "Model Name": os.arch(),
      "Firmware Version": os.release()

      "hardware_vendor": "ARM",
      "hardware_model": "Angstrom",
      "Model Name": "Beaglebone Black",
      "Firmware Version": "Rev A5C"

> node agent

long wait for status /server/registration_status


And so this is where it is stuck. It's so close to working though, hopefully.


Any ideas as to why the status is not being received?

7 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.


RobotGrrl escribió:


      "hardware_vendor": os.cpus()[0].model,
      "hardware_model": os.platform(),
      "Model Name": os.arch(),
      "Firmware Version": os.release()

      "hardware_vendor": "ARM",
      "hardware_model": "Angstrom",
      "Model Name": "Beaglebone Black",
      "Firmware Version": "Rev A5C"

Thanks for using the iotkit-agent!

The fact you have to do this is not normal. What version of node are you running? On Galileo we're using node 0.10.22, versions after that should work ok too. What's the output of forever.log? Also please use the code tags, makes it much easier to read :)

Node version was 0.8.22. Updated to 0.10.26. 

Yes! Now the os variables work!

Running agent again, the device registration was successful. Sending data upstream successfully now :)

Thanks for the help Brendan.

I am trying to get my Galileo to register with the cloud. I upgraded my node on Galileo to 0.10.22 and I am able to fire up agent.js etc. I followed the steps to get the mac addr and registered a device in my enableiot account - All good. 

When I reboot galileo, everything fires up fine, but what is happening is that the Status returned for my device is "FALSE".  to be clear, here is the snippet of code from cloud.js:



    .on('message', function(topic, message) {'STATUS: %s', topic, message);

      var regStatus = JSON.parse(message);

      // Check registration status is true and device_id is ours


if(regStatus !== undefined &&

       regStatus.response !== undefined &&

   regStatus.response.status &&

         regStatus.response.device_id == me.deviceId){





I am getting the response.status as FALSE. The accountid being returned for my galileo board's mac addr is correct, so it looks like it is looking it up correctly in the cloud, but the status returned is false. What could be the problem ?. Any ideas on how I could proceed ?. Thank

Here is some more information on my registration message: I dumped out what was being sent and here it is:

{"protocol_version":"1.0","timestamp":1398128594081,"sender_id":"98-4F-EE-00-0F-A2","msg_type":"device_registration_msg","properties":{"hardware_vendor":"Intel(R) Quark SoC X1000 CPU @ 339MHz","hardware_model":"linux","Model Name":"ia32","Firmware Version":"3.8.7-yocto-standard"},"peripherals":[{"uuid":"self","type":"gateway","properties":{},"services":[{"name":"98-4F-EE-00-0F-A2-sensor","version":"1.0"}]}],"service_metadata":[{"loaded":true,"capabilities":[],"enabled":true,"name":"98-4F-EE-00-0F-A2-sensor","version":"1.0","metrics":[]}]}


Note, I hardcoded the "hardware_vendor" string, since os.cpus[0].model is returning "05/09" in my Galileo. See below, when I simply run node from the shell in Galileo:


> require('os');

{ endianness: [Function],

  hostname: [Function],

  loadavg: [Function],

  uptime: [Function],

  freemem: [Function],

  totalmem: [Function],

  cpus: [Function],

  type: [Function],

  release: [Function],

  networkInterfaces: [Function],

  arch: [Function],

  platform: [Function],

  tmpdir: [Function],

  tmpDir: [Function],

  getNetworkInterfaces: [Function: deprecated],

  EOL: '\n' }

> os.cpus()

[ { model: '05/09',

    speed: 399,


     { user: 457098100,

       nice: 0,

       sys: 371869100,

       idle: 355100,

       irq: 0 } } ]



sorry, not completely clear to me: to which cloud do you aim to connect?

BTW: pls post codes in code blocks [see description below comment box]


e.g. "\[bash\] / \[/bash\]" for bash

example - bash "dice game":

	echo "dice - quit (q)"; while true; do echo $((RANDOM % 6 + 1)); read -t 2 -n 1 -s q; if [ [ $q == "q" ] ] ; then break; fi; done


@Pravici: Duplicate of - to be followed up there

Leave a Comment

Please sign in to add a comment. Not a member? Join today