Difference between revisions of "Avid E3 Engine Internals"

From musings of k8
Jump to navigation Jump to search
 
(4 intermediate revisions by one other user not shown)
Line 1: Line 1:
 
## Overview
 
## Overview
  
The E3 Engine contains a daughter board (the Diamond Platform controller) running Linux that enables the AVB protocol stack, and connects to the physical audio interfaces of the E3 engine. The fourth Ethernet port is controlled by Windows.
+
The [[Avid E3 Engine]] contains a daughter board, the Diamond Platform controller (see [[Avid Diamond Platform]]) running Linux that bridges the physical audio connections of the E3 engine with the [[AVB]] protocol stack.
  
It also contains a second daughter board (the Feroceon-KW controller) running Linux that enables the Ethernet switching functionality of the AVB ports. It also provides an EUCON proxy for connecting to the S3 console.
+
It also contains a second daughter board, the Feroceon-KW controller (see [[Avid Feroceon-KW]]) running Linux that enables the Ethernet switching functionality of the AVB ports (ports A, B, and C). It also provides an [[EUCON]] proxy for connecting to the [[Avid S3 Console]].
 +
 
 +
The fourth Ethernet port is controlled by Windows.
  
 
This is a rough block diagram based on my current understanding from my digging.
 
This is a rough block diagram based on my current understanding from my digging.
Line 9: Line 11:
 
[[File:Avid_E3_Engine_Block.png]]
 
[[File:Avid_E3_Engine_Block.png]]
  
## Diamond Platform (Linux)
 
 
This controller connects to all of the ADC (Analog to Digital Converters), and runs the AVB daemon (`avbd`), which provides AVB connectivity. The `avdecc` and `diag` commands for configuring the ADCs.
 
 
Both the E3 Engine and the Stage16 contain this Linux device.
 
 
### Overview
 
**Hardware**
 
; Processor : ARMv7 Processor rev 2 (v7l)
 
; BogoMIPS : 719.25
 
; Hardware : Diamond
 
; RAM : 256M
 
 
**Operating system**
 
 
The OS is Linux, and looks to be named "Bonanza Green Salamander". On the S3L-X 4.6.1.4 release this OS version is 1.2.0.152.
 
 
**Networking**
 
 
This controller provides two Ethernet interfaces, `eth0` and `eth0:avahi` (a virtual interface managed by `avahi-daemon`).
 
 
The `eth0:avahi` interface has a link-local address that is available even though the `eth0` interface, and is accessible using the address `diamondXXXX.local`, where `XXXX` is replaced by the hex characters of the last two octets of the system MAC address.
 
 
### OS
 
 
**uname -a**
 
```
 
# uname -a
 
Linux DiamondF7E0 2.6.37 #1 Wed Jan 10 06:10:38 PST 2018 armv7l GNU/Linux
 
```
 
 
 
**/etc/version** – Linux version
 
```
 
# cat /etc/version
 
Bonanza Green Salamander 1.2.0.152
 
```
 
 
 
**/proc/cpuinfo**
 
```
 
# cat /proc/cpuinfo
 
Processor      : ARMv7 Processor rev 2 (v7l)
 
BogoMIPS        : 719.25
 
Features        : swp half fastmult vfp edsp neon vfpv3
 
CPU implementer : 0x41
 
CPU architecture: 7
 
CPU variant    : 0x3
 
CPU part        : 0xc08
 
CPU revision    : 2
 
 
Hardware        : Diamond
 
Revision        : 0000
 
Serial          : 0000000000000000
 
```
 
 
**/proc/meminfo**
 
```
 
# cat /proc/meminfo
 
MemTotal:        256016 kB
 
MemFree:          216372 kB
 
Buffers:            1016 kB
 
Cached:            27192 kB
 
SwapCached:            0 kB
 
Active:            29984 kB
 
Inactive:          1036 kB
 
Active(anon):      3996 kB
 
Inactive(anon):        0 kB
 
Active(file):      25988 kB
 
Inactive(file):    1036 kB
 
Unevictable:          0 kB
 
Mlocked:              0 kB
 
SwapTotal:            0 kB
 
SwapFree:              0 kB
 
Dirty:                0 kB
 
Writeback:            0 kB
 
AnonPages:          2828 kB
 
Mapped:            4288 kB
 
Shmem:              1184 kB
 
Slab:              6224 kB
 
SReclaimable:      3204 kB
 
SUnreclaim:        3020 kB
 
KernelStack:        480 kB
 
PageTables:          344 kB
 
NFS_Unstable:          0 kB
 
Bounce:                0 kB
 
WritebackTmp:          0 kB
 
CommitLimit:      128008 kB
 
Committed_AS:      75812 kB
 
VmallocTotal:    647168 kB
 
VmallocUsed:      17620 kB
 
VmallocChunk:    622588 kB
 
```
 
 
 
**/proc/version**
 
```
 
# cat /proc/version
 
Linux version 2.6.37 (mir@audiofw-us-server0) (gcc version 4.8.1 (Sourcery CodeBench Lite 2013.11-33) ) #1 Wed Jan 10 06:10:38 PST 2018
 
```
 
 
 
**df -h**
 
```
 
# df -h
 
Filesystem                Size      Used Available Use% Mounted on
 
/dev/root                12.0M      6.4M      5.6M  54% /
 
tmpfs                    61.4M    252.0K    61.2M  0% /tmp
 
tmpfs                    61.4M        0    61.4M  0% /dev
 
tmpfs                    61.4M        0    61.4M  0% /dev/shm
 
tmpfs                    61.4M    252.0K    61.2M  0% /etc
 
```
 
 
 
**hostname**
 
```
 
# hostname
 
DiamondF7E0
 
```
 
 
 
**ifconfig -a**
 
```
 
# ifconfig -a
 
eth0      Link encap:Ethernet  HWaddr 84:7E:40:E5:F7:E0 
 
          inet addr:10.0.1.6  Bcast:10.0.1.255  Mask:255.255.255.0
 
          inet6 addr: fe80::867e:40ff:fee5:f7e0/64 Scope:Link
 
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
 
          RX packets:127849856 errors:0 dropped:0 overruns:0 frame:0
 
          TX packets:127746073 errors:0 dropped:0 overruns:0 carrier:0
 
          collisions:0 txqueuelen:1000
 
          RX bytes:1840653429 (1.7 GiB)  TX bytes:1901257965 (1.7 GiB)
 
 
eth0:avahi Link encap:Ethernet  HWaddr 84:7E:40:E5:F7:E0 
 
          inet addr:169.254.12.234  Bcast:169.254.255.255  Mask:255.255.0.0
 
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
 
 
lo        Link encap:Local Loopback 
 
          inet addr:127.0.0.1  Mask:255.0.0.0
 
          inet6 addr: ::1/128 Scope:Host
 
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
 
          RX packets:9 errors:0 dropped:0 overruns:0 frame:0
 
          TX packets:9 errors:0 dropped:0 overruns:0 carrier:0
 
          collisions:0 txqueuelen:0
 
          RX bytes:972 (972.0 B)  TX bytes:972 (972.0 B)
 
 
sit0      Link encap:IPv6-in-IPv4 
 
          NOARP  MTU:1480  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:0
 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
 
```
 
 
 
**lsmod**
 
```
 
# lsmod
 
Module                  Size  Used by    Not tainted
 
carbonui_flash_qe      1329  0
 
carbonui_program        2245  0
 
carbonreario            3097  0
 
carbonreario_bosb      9655  0
 
carbonreario_boer      4531  0
 
carbonreario_generic    1355  1 carbonreario
 
carbonio              10445  0
 
carbonio_aes4x4        19459  0
 
carbonio_adc8          24052  0
 
carbonio_adc4          16412  0
 
carbonio_dac8          7034  0
 
carbonio_dac4_single    5986  0
 
carbonio_dac4          9842  0
 
carbonio_bo_sb_mb      4099  0
 
carbonio_bo_surf_reartwo    7045  0
 
carbonio_bo_surf_reario    7722  0
 
carbonio_generic        1523  1 carbonio
 
carbonio_mute          1867  7 carbonreario_bosb,carbonreario_boer,carbonio_aes4x4,carbonio_dac8,carbonio_dac4_single,carbonio_bo_sb_mb,carbonio_bo_surf_reario
 
carbonio_nconfig        3939  1 carbonio_aes4x4
 
cs4272                11652  0
 
logicalio              9510  9 carbonreario_bosb,carbonreario_boer,carbonio_adc8,carbonio_adc4,carbonio_dac8,carbonio_dac4_single,carbonio_dac4,carbonio_bo_surf_reario,cs4272
 
lm63                    7758  0
 
avb_emac              76091  0
 
```
 
 
 
**lspci**
 
```
 
# lspci
 
lspci: /sys/bus/pci/devices: No such file or directory
 
```
 
 
**lsusb**
 
```
 
# lsusb -v
 
Bus 001 Device 001: ID 1d6b:0002
 
Bus 002 Device 001: ID 1d6b:0002
 
 
From http://www.linux-usb.org/usb.ids:
 
1d6b  Linux Foundation
 
0001  1.1 root hub
 
0002  2.0 root hub
 
0003  3.0 root hub
 
0100  PTP Gadget
 
0101  Audio Gadget
 
0102  EEM Gadget
 
0103  NCM (Ethernet) Gadget
 
0104  Multifunction Composite Gadget
 
0105  FunctionFS Gadget
 
0200  Qemu Audio Device
 
```
 
 
 
**netstat -an**
 
```
 
# netstat -an
 
Active Internet connections (servers and established)
 
Proto Recv-Q Send-Q Local Address          Foreign Address        State     
 
tcp        0      0 0.0.0.0:45641          0.0.0.0:*              LISTEN     
 
tcp        0      0 0.0.0.0:80              0.0.0.0:*              LISTEN     
 
tcp        0      0 0.0.0.0:21              0.0.0.0:*              LISTEN     
 
tcp        0      0 0.0.0.0:23              0.0.0.0:*              LISTEN     
 
tcp        0      0 169.254.12.234:23      169.254.219.148:55078  ESTABLISHED
 
tcp        0      0 169.254.12.234:45641    169.254.181.43:49220    ESTABLISHED
 
udp        0      0 0.0.0.0:47166          0.0.0.0:*                         
 
udp        0      0 0.0.0.0:5353            0.0.0.0:*
 
```
 
 
 
**ps**
 
```
 
# ps
 
  PID USER      VSZ STAT COMMAND
 
    1 root      2924 S    init
 
    2 root        0 SW  [kthreadd]
 
    3 root        0 SW  [ksoftirqd/0]
 
    4 root        0 SW  [kworker/0:0]
 
    6 root        0 SW<  [khelper]
 
    7 root        0 SW  [irq/72-serial i]
 
    8 root        0 SW  [irq/73-serial i]
 
    9 root        0 SW  [irq/74-serial i]
 
  10 root        0 SW  [irq/44-serial i]
 
  11 root        0 SW  [irq/45-serial i]
 
  12 root        0 SW  [sync_supers]
 
  13 root        0 SW  [bdi-default]
 
  14 root        0 SW<  [kblockd]
 
  15 root        0 SW<  [omap2_mcspi]
 
  16 root        0 SW  [khubd]
 
  17 root        0 SW  [kseriod]
 
  18 root        0 SW<  [kmmcd]
 
  19 root        0 SW<  [musb-hdrc.0]
 
  20 root        0 SW<  [musb-hdrc.1]
 
  21 root        0 SW<  [rpciod]
 
  22 root        0 SW  [gatekeeper/0]
 
  23 root        0 SW  [kworker/0:1]
 
  24 root        0 SW  [kswapd0]
 
  25 root        0 SW  [fsnotify_mark]
 
  26 root        0 SW<  [aio]
 
  27 root        0 SW<  [nfsiod]
 
  28 root        0 SW<  [crypto]
 
  35 root        0 SW<  [spi_gpio.5]
 
  36 root        0 SW<  [usbhid_resumer]
 
  37 root        0 SW  [kworker/u:1]
 
  38 root        0 SW  [mmcqd/0]
 
  39 root        0 SW  [kjournald]
 
  45 root        0 SW  [kjournald]
 
  68 root      2924 S    /sbin/syslogd -m 0
 
  70 root      2924 S    /sbin/klogd
 
  92 dbus      2580 S    dbus-daemon --system
 
  98 root        0 SW  [logicalio]
 
  189 root        0 SW  [kworker/u:2]
 
  228 root      1936 S    /usr/bin/linkwatcher
 
  233 root      2160 S    /usr/bin/mstpd
 
  255 default  2048 S    avahi-autoipd: [eth0] bound 169.254.12.234
 
  256 root      1960 S    avahi-autoipd: [eth0] callout dispatcher
 
  266 root      3920 S <  /usr/bin/switchd2
 
  276 root      3012 S    /usr/sbin/inetd /etc/inetd.conf
 
  281 default  3152 S    avahi-daemon: registering [DiamondF7E0.local]
 
  286 root      4912 S <  /usr/bin/avbd -p -x -l /opt/etc/avdecc_layout.xml
 
  295 root      2928 S    /sbin/getty -L ttyO0 115200 vt100
 
  296 root    77068 S    bonanzafw --boer -L 31 -R 1 -B 2048 -K 2 -F /tmp/BonanzaER.log
 
  316 root      2924 S    udhcpc -R -b -t6 -T1 -p /var/run/udhcpc.eth0.pid -i eth0
 
  357 root      3020 S    telnetd -i
 
  358 root      3016 S    -sh
 
1255 root      3016 R    ps
 
```
 
 
### Web server
 
This controller is running a BusyBox web server on port 80 via inetd.
 
 
```
 
# grep http /etc/inetd.conf
 
http    stream  tcp    nowait  root    /usr/sbin/httpd        httpd -i -h/www
 
```
 
 
### AVB
 
 
**/proc/avb**
 
```
 
# cat /proc/avb
 
AVB general settings:
 
        Sample rate:    48000 Hz
 
        Sync source:    Internal
 
        Global PTO:    750000 ns
 
 
AVB RT subsystem:
 
        AVB avg cyc:    8687 / 12 us
 
        AVB max cyc:    12324 / 17 us
 
        Total cyc:      89960 / 124 us
 
        CPU time:      9 %
 
        QDMA time:      1 us
 
        Num late IRQ:  0
 
        Min IRQ delta:  120 us
 
        Max IRQ delta:  130 us
 
        Rem QDMA slots: 363
 
 
AVB TX Timestamping:
 
        Detected rate:  48003 Hz
 
        TS delta avg:  166661 ns
 
        TS max err:    25 ns
 
 
AVB RX Timestamping:
 
        TS delta avg:  166670 ns
 
        TS max err:    1979 ns
 
 
AVB TX Streams: 3 active streams with 72 channels total
 
 
Entry  Type    Stream ID              nCh    DMA    PTO ns  Forced  DMA fail
 
 
(0)    0      847e40e5f7e20000        8      64      2000000  *    0
 
(1)    0      847e40e5f7e10000        32      64      2000000  *    0
 
(2)    0      847e40e5f7e10001        32      96      2000000  *    0
 
 
AVB RX Streams: 3 active streams with 72 mapped channels total
 
 
Entry  Type    Stream ID      sync    nCh    Phase  state  src    Relax  Miss    Late    Exc    Seq    Slip    Avg    Min
 
                                                deg                                                                    us      us
 
  
(0)    0      0001f20035e60000        8      -180    NSTART          0      0      0      0      0      0      0      2666
+
## Credits
(1)    0      38c98645b3ff0000        32      52    RUN    1      0      0      0      0      0      106    1940    1938
 
(2)    0      38c98645b3ff0001        32      52    RUN    1      0      0      0      0      0      106    1828    1813
 
```
 
  
 +
Many thanks to Karl Noon (audio@noon.ruhr), who is the person who supplied me with just enough info that I was able to find my way into the internals of the [[Avid S3L]].
  
### diag command
+
Avid [ex]-employees I've tracked down
 +
- Jeff Koftinoff (http://www.linkedin.com/in/jdkoftinoff/) – Senior Networking Software Engineer at Apple and IEEE Technical Editor; member of AES
 +
- Jessie Forgues (https://www.linkedin.com/in/jesseforgues/) – Senior Engineer at Gibson. Previously a Principal Engineer of the Avid S3L system.
 +
- Rob Silfvast (https://www.linkedin.com/in/robsilfvast/) – Hardware and Systems Engineering at Apple; developer of many parts of the Avid S3L AVB internals
  
This command configures the ADC for the E3 signals.
 
  
```
+
## Machine
# diag
 
  
        Version 3.02  2014-Apr-17
+
Info
 +
; OS : Windows Embedded 8
 +
; Processor : Intel(R) Celeron(R) CPU -- P4500 @ 1.87GHz
 +
; Installed memory (RAM) : 2.00 GB (1.87 GB usable)
 +
; System type : 64-bit Operating System, x64-based processor
  
        Options:
+
Device Manger
        -testall        Run All Tests
+
- Dongles
        -loop          Loop Individual Test
+
  - iLok -- Provider: PACE Anti-Piracy, Inc. Date: 4/11/2013 Version: 6.1.1.0
        -loopsuite      Loop Test Suite
+
- Human Interface Devices
        -avbloop        AVB Loopback Tests
+
  - Avid Virtual Keyboard Device -- Provider: Avid, Date: 8/21/2014 Version: 4.5.0.507
        -i2c            I2C Test
+
  - Avid Virtual Mouse Device -- Provider: Avid, Date: 8/21/2014 Version: 4.5.0.507
        -ins            InS Test
+
- Network adapters
        -quartz        Quartz Tests
+
  - Intel(R) 82574L Gigabit Network Connection -- Provider: Intel Date: 8/26/2013 Version: 12.10.13.0
        -spi            SPI Test
+
  - Intel(R) 82577LM Gigabit Network Connection -- Provider: Intel Date: 6/19/2013 Version: 12.7.27.0
        -uart          UART Test
+
- Sound, video and game controllers
        -usb            USB Test
+
  - Bonanza-On-Berlin -- Provider: Avid Date: 2/6/2018 Version: 4.6.1.4
        -insboard      InS Board Test
 
        -boardrev      Board Rev Utility
 
        -aesloop        AES Loopback Test
 
        -usbutil        USB Utilities
 
        -ethtest        Ethernet Test
 
        -mixer          Mixer Utility
 
        -ext            Ext Sync Test
 
        -iomute        IO Card Mute
 
        -fifoloop      Quartz FIFO InS Loop Test
 
        -miscutils      Miscellaneous Utilities
 
        -codec          Codec Utility
 
  
        I/O Card Mute: unmute
+
## TODOs
        Quartz Mute:   unmute
+
- Research stuff in `C:\Program Files\Digidesign\D-Show`
```
+
  - `BonanzaUnitImage.bin`
 +
  - `BonanzaZirconUnitImage.bin`
 +
  - `BuckyballFPGA_d803.bin`
 +
  - `CarbonLogsCollector` -- Check the `eucon_FTP_get_script.bat` batch script in here for interesting `dns-sd` stuff…
 +
  - `KirkwoodUnitImage.bin`
 +
  - `portwellx64.sys` -- related to https://portwell.eu/ ??cat
 +
  - `TophatFPGA_d200.bin`
  
### carbonio
 
[[Avid carbonio]]
 
  
  
 
[[Category:Avid]]
 
[[Category:Avid]]
 
[[Category:S3L]]
 
[[Category:S3L]]

Latest revision as of 13:59, 19 December 2020

    1. Overview

The Avid E3 Engine contains a daughter board, the Diamond Platform controller (see Avid Diamond Platform) running Linux that bridges the physical audio connections of the E3 engine with the AVB protocol stack.

It also contains a second daughter board, the Feroceon-KW controller (see Avid Feroceon-KW) running Linux that enables the Ethernet switching functionality of the AVB ports (ports A, B, and C). It also provides an EUCON proxy for connecting to the Avid S3 Console.

The fourth Ethernet port is controlled by Windows.

This is a rough block diagram based on my current understanding from my digging.

Avid E3 Engine Block.png


    1. Credits

Many thanks to Karl Noon (audio@noon.ruhr), who is the person who supplied me with just enough info that I was able to find my way into the internals of the Avid S3L.

Avid [ex]-employees I've tracked down - Jeff Koftinoff (http://www.linkedin.com/in/jdkoftinoff/) – Senior Networking Software Engineer at Apple and IEEE Technical Editor; member of AES - Jessie Forgues (https://www.linkedin.com/in/jesseforgues/) – Senior Engineer at Gibson. Previously a Principal Engineer of the Avid S3L system. - Rob Silfvast (https://www.linkedin.com/in/robsilfvast/) – Hardware and Systems Engineering at Apple; developer of many parts of the Avid S3L AVB internals


    1. Machine

Info

OS
Windows Embedded 8
Processor
Intel(R) Celeron(R) CPU -- P4500 @ 1.87GHz
Installed memory (RAM)
2.00 GB (1.87 GB usable)
System type
64-bit Operating System, x64-based processor

Device Manger - Dongles

 - iLok -- Provider: PACE Anti-Piracy, Inc. Date: 4/11/2013 Version: 6.1.1.0

- Human Interface Devices

 - Avid Virtual Keyboard Device -- Provider: Avid, Date: 8/21/2014 Version: 4.5.0.507
 - Avid Virtual Mouse Device -- Provider: Avid, Date: 8/21/2014 Version: 4.5.0.507

- Network adapters

 - Intel(R) 82574L Gigabit Network Connection -- Provider: Intel Date: 8/26/2013 Version: 12.10.13.0
 - Intel(R) 82577LM Gigabit Network Connection -- Provider: Intel Date: 6/19/2013 Version: 12.7.27.0

- Sound, video and game controllers

 - Bonanza-On-Berlin -- Provider: Avid Date: 2/6/2018 Version: 4.6.1.4
    1. TODOs

- Research stuff in `C:\Program Files\Digidesign\D-Show`

 - `BonanzaUnitImage.bin`
 - `BonanzaZirconUnitImage.bin`
 - `BuckyballFPGA_d803.bin`
 - `CarbonLogsCollector` -- Check the `eucon_FTP_get_script.bat` batch script in here for interesting `dns-sd` stuff…
 - `KirkwoodUnitImage.bin`
 - `portwellx64.sys` -- related to https://portwell.eu/ ??cat 
 - `TophatFPGA_d200.bin`