My NUC Rock

Show us your [system] or headphones

Roon, is a fantastic audio media player from the people who brought you Sooloos.

Network Usage

  • UDP port 9003 - used for discovery
  • TCP ports 9100-9200 via

nettop -m udp, use up/down arrows to scroll * p for human readable

ROCK etc

A Roon Volume Control

Based on the Microsoft Surface Dial

package main

import (
    "bytes"
    "encoding/binary"
    "fmt"
    "os"
    "time"
)

func main() {
    f, err := os.Open("/dev/input/event10")
    if err != nil {
        panic(err)
    }
    defer f.Close()
    b := make([]byte, 24)
    for {
        f.Read(b)
        sec := binary.LittleEndian.Uint64(b[0:8])
        usec := binary.LittleEndian.Uint64(b[8:16])
        t := time.Unix(int64(sec), int64(usec))
        fmt.Println(t)
        var value int32
        typ := binary.LittleEndian.Uint16(b[16:18])
        code := binary.LittleEndian.Uint16(b[18:20])
        binary.Read(bytes.NewReader(b[20:]), binary.LittleEndian, &value)
        fmt.Printf("type: %x\ncode: %d\nvalue: %d\n", typ, code, value)
    }
}

event_message.go

Gist

package main

import (
        "bytes"
        "encoding/binary"
        "fmt"
        "os"
        "time"
)

func main() {
        f, err := os.Open("/dev/input/event1")

        if err != nil {
                panic(err)
        }

        defer f.Close()

        b := make([]byte, 16)

        for {
                f.Read(b)
                fmt.Printf("%b\n", b)

                sec := binary.LittleEndian.Uint32(b[0:8])
                t := time.Unix(int64(sec), 0)
                fmt.Println(t)

                var value int32
                typ := binary.LittleEndian.Uint16(b[8:10])
                code := binary.LittleEndian.Uint16(b[10:12])
                binary.Read(bytes.NewReader(b[12:]), binary.LittleEndian, &value)
                fmt.Printf("type: %x\ncode: %d\nvalue: %d\n", typ, code, value)
        }
}

Roon / Rasberry Pi

You might be interested in the automated installation image

DietPi - Roon Bridge auto installation and setup:

  • Download the image for your board (any ARMv7, eg: RPi 2/3, OrangePi etc). http://dietpi.com/download8
  • Write image to SD
  • Download the automated config file for Roon Bridge (right click, save as): http://dietpi.com/downloads/conf/DietPi-Roon/dietpi.txt10 and save to /boot/dietpi.txt
  • Plug in Ethernet, or, configure WiFi in /boot/dietpi.txt
  • Plug in SDcard
  • Power on DietPi will automatically update, install and configure Roon Bridge, no user input required. Depending on the speed of your SD card and SBC used, system will be ready within 1-10 minutes.

Soon - BeadleBone Black

http://www.computeraudiophile.com/content/625-geek-speak-how-build-upnp-dlna-openhome-renderer-less-100/comments11.html#comments

Then install Roon on top.

http://dietpi.com/phpbb/viewtopic.php?f=8&t=9

http://archimago.blogspot.co.uk/2017/01/measurements-raspberry-pi-3-as-usb.html