diff --git a/Examples/testLED.jl b/Examples/testLED.jl
index d61d0e74027429ad9bd3d9d7d2e13ca0aaa34cbc..116f15bd3eeefcd7fa5b675cce8710e6dc6f780c 100644
--- a/Examples/testLED.jl
+++ b/Examples/testLED.jl
@@ -27,24 +27,25 @@ for i = 1:100
     get(led1)
     get(led2)
     get(led3)
-    #sleep(0.1)
-    v1,v2,v3 = read(stream) #Sends request to read, reads all inputs for which get! was called
-    v1 == !v2 == v3 == ledon ? nothing : println("ledon is $ledon, but read v1, v2, v3 = $v1, $v2, $v3")
+    sleep(0.1)
+     v1,v2,v3 = .==(read(stream), "1") #Sends request to read, reads all inputs for which get! was called
+     v1 == !v2 == v3 == ledon ? nothing : println("ledon is $ledon, but read v1, v2, v3 = $v1, $v2, $v3")
     ledon = !ledon
 end
 for i = 1:40
+    global ledon
     send(led1, ledon)
     #sleep(0.03)
-    v1 = read(led1)
+    v1 = read(led1) == "1"
     send(led2, ledon)
     #sleep(0.03)
-    v2 = read(led2)
+    v2 = read(led2) == "1"
     send(led3, ledon)
     #sleep(0.03)
-    v3 = read(led3)
+    v3 = read(led3) == "1"
     send(led4, ledon)
     #sleep(0.03)
-    v4 = read(led4)
+    v4 = read(led4) == "1"
     v1 == v2 == v3 == v4 == ledon ? nothing : println("ledon is $ledon, but read v1, v2, v3, v4 = $v1, $v2, $v3, $v4")
     ledon = !ledon
 end
diff --git a/src/BeagleBone/BeagleBone.jl b/src/BeagleBone/BeagleBone.jl
index aca8a1cbace4c45d3fa292bdc8487f0d4e205b49..1d888ac94f3ff6e3e2aa530fbd16680cac59c906 100644
--- a/src/BeagleBone/BeagleBone.jl
+++ b/src/BeagleBone/BeagleBone.jl
@@ -106,24 +106,26 @@ end
 
 """
     bbparse(l::Tuple, sock)
-Parse input on the form `l=(iswrite, ndev, cmd1, cmd2, ..., cmdn)`
-where if `iswrite`
+Parse input on the form `l=(operation, ndev, cmd1, cmd2, ..., cmdn)`
+where if `operation==1` (write)
     `cmdi = (devname, id, val)`
-    and if not `iswrite`
+    and if `operation==0` (read)
+    `cmdi = (devname, id)`
+    and if `operation==2` (initialize)
     `cmdi = (devname, id)`
 and send back on socket (vals, timestamps).
 """
 function bbparse(l::Tuple, sock)
-    iswrite = l[1]::Bool            #True if write command, false if read
+    operation = l[1]::Int32           #1 if write command, 0 if read, 2 if init
     ndev = l[2]::Int32              #Number of devices/commands
-    if iswrite
+    if operation == 1
         for i = 1:ndev
             command = l[2+i]::Tuple
             dev = getdev(command[1], command[2])
             write!(dev, command[3])
         end
         return
-    else
+    elseif operation == 0
         #TODO fix to have at least partial type stability
         vals = Array{Any,1}(undef,ndev)
         timestamps = Array{UInt64,1}(undef,ndev)
@@ -135,6 +137,14 @@ function bbparse(l::Tuple, sock)
         end
         bbsend(sock, (vals, timestamps))
         return
+    elseif operation == 2
+        for i = 1:ndev
+            command = l[2+i]::Tuple
+            dev = initdev(command[1], command[2])
+        end
+        return
+    else
+        error("Unknown operation $operation, cmd: $l")
     end
 end
 
@@ -173,7 +183,8 @@ function run_server(port=2001; debug=false)
                         println("Connection to server closed")
                     else
                         println("error: $(typeof(err))")
-                        rethrow()
+                        println("err: $err")
+                        rethrow(err)
                     end
                 end
             end
diff --git a/src/BeagleBone/SysLED.jl b/src/BeagleBone/SysLED.jl
index 71680bc8c802d6f0d41f4735832377477410ed17..5f06999b086470418f0c75ba9f9e66b86b2f2f61 100644
--- a/src/BeagleBone/SysLED.jl
+++ b/src/BeagleBone/SysLED.jl
@@ -31,6 +31,11 @@ function write!(led::SysLED, entry::String, debug::Bool=false)
     flush(led.filestream)
 end
 
+# Catch Boolean writes
+write!(led::SysLED, entry::Bool, debug::Bool=false) =
+  write!(led::SysLED, entry ? "1" : "0", debug)
+
+
 """
     l = read(led::SysLED, debug::Bool=false)
 Reads the current brightness value from the LED 'SysLED'.
diff --git a/src/Computer/BeagleBoneStream.jl b/src/Computer/BeagleBoneStream.jl
index d04600067554843ab993c20adaaee7a0157cdd61..844d721e0d8c3168b8031fec1572d16fc31589ee 100644
--- a/src/Computer/BeagleBoneStream.jl
+++ b/src/Computer/BeagleBoneStream.jl
@@ -21,6 +21,12 @@ function init_devices!(bbstream::BeagleBoneStream, devs::AbstractDevice...)
             setstream!(dev, bbstream)
             push!(bbstream.devices, dev)
             initialize(dev)
+            # Send to beaglebone 2: initialize, 1 device, (name, index)
+            # TODO create proper functionality to initialize
+            readcmd = getreadcommand(bbstream, dev)
+            name = readcmd[1]::String
+            idx = readcmd[2]::Integer
+            serialize(bbstream.stream, (Int32(2), Int32(1), (name, Int32(idx))))
         else
             warn("Device $dev already added to a stream")
         end
@@ -30,14 +36,14 @@ end
 
 function send(bbstream::BeagleBoneStream)
     ncmds = length(bbstream.sendbuffer)
-    serialize(bbstream.stream, (true, Int32(ncmds), bbstream.sendbuffer...))
+    serialize(bbstream.stream, (Int32(1), Int32(ncmds), bbstream.sendbuffer...))
     empty!(bbstream.sendbuffer)
     return
 end
 #TODO know the types of outputs some way
 function read(bbstream::BeagleBoneStream)
     ncmds = length(bbstream.readbuffer)
-    serialize(bbstream.stream, (false, Int32(ncmds), bbstream.readbuffer...))
+    serialize(bbstream.stream, (Int32(0), Int32(ncmds), bbstream.readbuffer...))
     empty!(bbstream.readbuffer)
     vals, timestamps = deserialize(bbstream.stream)
     length(vals) == ncmds || error("Wrong number of return values in $vals on request $(bbstream.readbuffer)")
@@ -47,13 +53,13 @@ end
 
 #The following are for interal use only
 function send(bbstream::BeagleBoneStream, cmd)
-    allcmds = (true, Int32(1), cmd)
+    allcmds = (Int32(1), Int32(1), cmd)
     println("Sending single command: $allcmds")
     serialize(bbstream.stream, allcmds)
     return
 end
 function read(bbstream::BeagleBoneStream, cmd)
-    allcmds = (false, Int32(1), cmd)
+    allcmds = (Int32(0), Int32(1), cmd)
     println("Sending single command: $allcmds")
     serialize(bbstream.stream, allcmds)
     vals, timestamps = deserialize(bbstream.stream)