• Disclaimer: This Vendor's Forum is a paid-for commercial area. Unlike the rest of diyAudio, the Vendor has complete control of what may or may not be posted in this forum. If you wish to discuss technical matters outside the bounds of what is permitted by the Vendor, please use the non-commercial areas of diyAudio to do so.

Introducing the Buffalo III-SE-Pro 9028/9038

Member
Joined 2007
Paid Member
Hi Russ and Frank, I set up my github page and put up a shell script focusing on controlling B3SEpro via I2C, specifically for 128fs setting.

GitHub - twluke/B3SEpro-I2C-Control: To control B3SEpro (Twisted Pear Audio) via I2C

Hi Twluke,

I'm just now back to my home system. It seems you have achieved the goal of creating a working startup script. Good job! In this case, to modify the DAC setup, you will need to modify and re-run the script. Is this a suitable endpoint, or would you like to interact with the DAC while it is running? For example, perhaps you would like to mute the DAC manually (register 7) or change the volume (register 27) or DPLL bandwidth (register 12). If this would be useful, then I can show you how to do this in a Python script that would respond to any text sent by TCP to the BBB, or via command line on the BBB as the system is running.

Two minor thoughts:
First, when I first started programming the 9028 I had some trouble that I would not want others to experience. If your system uses balanced amps, then I suggest setting bits 0, 1, and 2 of register 15 to 1. I use 0x07 to force all 8 channels to the same volume and latching channels to change at once.
Second, line 52 of your script had me concerned at first. Your value of 0x5a is good, however the binary value in your comment is different. It should be 01011010.

All the best,

Frank
 
Hi Frank, thank you for your kind and quick comments.
-snip-
Is this a suitable endpoint, or would you like to interact with the DAC while it is running?
Either way will be okay for me but now I'm inclined to try the latter option.
For example, perhaps you would like to mute the DAC manually (register 7) or change the volume (register 27) or DPLL bandwidth (register 12). If this would be useful, then I can show you how to do this in a Python script that would respond to any text sent by TCP to the BBB, or via command line on the BBB as the system is running.
Very kind offering. I'd like to appreciate your python script.
Two minor thoughts:
First, when I first started programming the 9028 I had some trouble that I would not want others to experience. If your system uses balanced amps, then I suggest setting bits 0, 1, and 2 of register 15 to 1. I use 0x07 to force all 8 channels to the same volume and latching channels to change at once.
The B3SEpros are now connected to a DLCP from Hypex and then to NC400s to drive 2-way system. I'll try to check your suggestion later.
Second, line 52 of your script had me concerned at first. Your value of 0x5a is good, however the binary value in your comment is different. It should be 01011010.
Thank you for pointing out this error. I'll correct it later today. Really appreciated your suggestions.

Best Regards,
 
Last edited:
Member
Joined 2007
Paid Member
Very kind offering. I'd like to appreciate your python script.

Very good! The code I'm using is over 700 lines, and not 100% finished. For you to look at Python and begin to understand, I have cut down an example script to about 160 lines and placed it on GitHub HERE.

It will take some explaining so I suggest we move this conversation to a different thread that has been fairly inactive, but relates to I2C and the control system that I use to manipulate es9028 DACs and the functions of the BBB. The thread is HERE.

I will give you some background and explanations over on that thread.

Frank
 
BIIISEpro Configuration

Hi,

after loosing some contact to my Hobby I now just want to setup my BIIIPro 9038.

There rise some questions even after reading the manual and firmware page (of which I do not understand a lot)

I would like to use two I2S sources (outside the Buffalo Box) via Teleporter (1: BBB with Hermes/cronus/teleporter 2: CDpro/metronom/teleporter) and one Spdif (older TP Toslink model) in the Box.
What would be the best practice to connect sources to the BIIIpro? And which solution would work best also with external master clock signal?
(a: two sending Teleporters outside box ---> two receiving Teleports in the box --> Otto ---> BIIIpro or b: two sending teleporters outside box --> Otto in box--> receiving Teleporter ---> BIIIpro)

How would I switch I2S and Spdif input?

thank you for advise

Branko
 
Member
Joined 2007
Paid Member
I would like to use two I2S sources (outside the Buffalo Box) via Teleporter (1: BBB with Hermes/cronus/teleporter 2: CDpro/metronom/teleporter) and one Spdif (older TP Toslink model) in the Box.
What would be the best practice to connect sources to the BIIIpro? And which solution would work best also with external master clock signal?

Your question is a good one and I wonder if 3 boxes are the best solution. I think the answer depends on factors you have not mentioned. I do not remember any posts describing Teleporters being used for transmitting the Cronus master clock to BIII in synchronous mode. It’s something that I might be interested in trying except that, a) the new B3s sound so great running asynchronously, and b) my Cronus is older and does not have the clock buffer. I tried teleporting the Cronus master clock but it is not robust enough without the buffer. Thus, I would need replacement parts to test master-via-teleporter, and I have another reason to doubt a huge benefit: with teleporters for I2S into B3 I can use the lowest setting for DPLL bandwidth (whereas I believe synch mode turns that function off). So, in terms of ‘best practices’ for synchronous mode, it seems for now that you should put Cronus in the same box as B3 and probably eliminate the teleporter pair for I2S between Cronus and the B3.

Of course, each of us enjoys the hobby differently. The work of making nice enclosures does little for the quality of sound, so I don’t have much patience for that labor. [But I enjoy programming the BBB while others don’t.] Better to eliminate unnecessary enclosures, and putting your BBB/Hermes/Cronus in the same enclosure with the B3 also would be best for running in synchronous mode. Otto takes only a little room, and could be controlled by the BBB if you wanted. I would solder-in Otto with very short connections for the I2S. IF you interact directly with the BBB, another option would be to eliminate Otto and process SPDIF through the BBB via USB.

Enjoy the process,

Frank
 
Your question is a good one and I wonder if 3 boxes are the best solution. I think the answer depends on factors you have not mentioned. I do not remember any posts describing Teleporters being used for transmitting the Cronus master clock to BIII in synchronous mode. It’s something that I might be interested in trying except that, a) the new B3s sound so great running asynchronously, and b) my Cronus is older and does not have the clock buffer. I tried teleporting the Cronus master clock but it is not robust enough without the buffer. Thus, I would need replacement parts to test master-via-teleporter, and I have another reason to doubt a huge benefit: with teleporters for I2S into B3 I can use the lowest setting for DPLL bandwidth (whereas I believe synch mode turns that function off). So, in terms of ‘best practices’ for synchronous mode, it seems for now that you should put Cronus in the same box as B3 and probably eliminate the teleporter pair for I2S between Cronus and the B3.

Of course, each of us enjoys the hobby differently. The work of making nice enclosures does little for the quality of sound, so I don’t have much patience for that labor. [But I enjoy programming the BBB while others don’t.] Better to eliminate unnecessary enclosures, and putting your BBB/Hermes/Cronus in the same enclosure with the B3 also would be best for running in synchronous mode. Otto takes only a little room, and could be controlled by the BBB if you wanted. I would solder-in Otto with very short connections for the I2S. IF you interact directly with the BBB, another option would be to eliminate Otto and process SPDIF through the BBB via USB.

Enjoy the process,

Frank

Hi Frank.

Thank you of your suggestions.
My first goal (some years ago :)) was to build a somewhat "modular" system with one DAC in its own box and all sources outside. So if I change sources i do not have to touch the DAC. After trying with waveIO and amanero in the box I am back to my start. The CD-player would still be outside. (btw: did not try I2S from it yet. only spdif). Also it is time to put things in a "nice" enclosure in our living room. So my "final" setup would be a DAC, a CD-Player, a network-player and turntable. And I can play with every piece without touching the others.

How would I pass spdif over the BBB to the Buffalo?

Branko
 
-snip-
I do not remember any posts describing Teleporters being used for transmitting the Cronus master clock to BIII in synchronous mode.

Hi Frank,

When based on my previous experience, I can say that it would be feasible to transmit the MCLK on the Cronus to B3SEpros via Teleporter as long as the DAC is set to pure sync mode (128fs) by the beta firmware for pure sync by Russ. I confirmed it when I built a B3SEpro(9028), which is now part of a dual mono system and can not be used to reproduce this feasibility for now.

Just my two cents.

#BTW the I2C control is working well, thanks!
 
Member
Joined 2007
Paid Member
Hi Frank.

Thank you of your suggestions.
My first goal (some years ago :)) was to build a somewhat "modular" system with one DAC in its own box and all sources outside.
...snip...
Also it is time to put things in a "nice" enclosure in our living room. So my "final" setup would be a DAC, a CD-Player, a network-player and turntable. And I can play with every piece without touching the others.

How would I pass spdif over the BBB to the Buffalo?

Branko

Hi Branko,

The beautiful metal cabinets that some DIYers make are quite impressive! If you like that part of the hobby then your modular setup will give much enjoyment! :)

Nice of twluke to clarify and report success moving a master clock into B3 via Teleporter!

As for why I manage SPDIF via BBB, my BBB is both a network player AND then the system's digital crossover (for 6 amp channels -> 6 drivers). The inexpensive SPDIF -> USB converter I use is no longer available but a newer one is available from the same vendor. The method is simple but it requires that a script run on the BBB to specify the input and direct the output. I use this method to play audio from any optical source at very low latency - short enough for video synch.

If your controls for your system could include an interface to the BBB command line (to switch between network player and SPDIF), then this method is about as easy as using an Otto switch. Here is an old post describing the setup: https://www.diyaudio.com/forums/twi...bbb-based-audio-appliances-5.html#post4680442

Cheers,

Frank
 
So one cool option is that the ES9028/38 allows you to assign GPIOs to SPDIF input. The default firmware could be altered to allow for that - then you could have 2 SPDIF sources (one consumer level coax, and one TTL/CMOS) without needing any external switching. :) If anyone is interested I can create a branch that does that.



Cheers!
Russ

Hi,

any chance for that Firmware branch with two spdif inputs?
How would I have to select sources (1 I2S, one spdif consumer level, one spdif TTL)? would the consumer level spdif go to the µfl input and TTL to the GPIO pins?

thx

Branko
 
Hi Branko,

The beautiful metal cabinets that some DIYers make are quite impressive! If you like that part of the hobby then your modular setup will give much enjoyment! :)

Nice of twluke to clarify and report success moving a master clock into B3 via Teleporter!

As for why I manage SPDIF via BBB, my BBB is both a network player AND then the system's digital crossover (for 6 amp channels -> 6 drivers). The inexpensive SPDIF -> USB converter I use is no longer available but a newer one is available from the same vendor. The method is simple but it requires that a script run on the BBB to specify the input and direct the output. I use this method to play audio from any optical source at very low latency - short enough for video synch.

If your controls for your system could include an interface to the BBB command line (to switch between network player and SPDIF), then this method is about as easy as using an Otto switch. Here is an old post describing the setup: https://www.diyaudio.com/forums/twi...bbb-based-audio-appliances-5.html#post4680442

Cheers,

Frank

Sooner or later I will try each way :)

ATM Would like to connect sources to the DAC one by one. So if I take off i.e. the BBB the spdif source can play on. As for sending master clock over teleporter I will try first async mode. If everything works out well then maybe sync. My controller (i2C with isolator shield) will be (for now) an Arduino Due inside the DAC enclosure with its USB reachable without the need to open the box. So I could play with the Doc registers and several Frontplate/Display designs.

BR

Branko
 
One key point that has already been brought up - is that you can't communicate with the DAC at all until it has been properly brought out of reset on power up. I do this with the on-board firmware. Buffalo-III-SE-Pro-On-Board-Firmware/Buffalo.c at 8c1b8a98a44933f9738452c19afcb6468af41bd8 * twistedpearaudio/Buffalo-III-SE-Pro-On-Board-Firmware * GitHub. You could likely also just keep reset high all the time- but I have never tried that.

Hi Russ, my project to control B3SE3pros via I2C, mainly focusing on pure sync mode, has been quite successful so far, though still in progress. It is quite convenient to change from serial/DSD connection to SPDIF and vice versa simply on the BBB terminal.

Recently I applied a reset monitor to make more stable I2C communication with the DAC and found that a TCM809R chip from Microchip worked quite well for this purpose.

Although there has been no problem with powering up the DAC with the DAC_RESET and DVCC GPIO pins shorted, this introduction of reset monitor made me to feel more secured in the I2C communication with the DAC.

Regards,
 

Attachments

  • tcm809.png
    tcm809.png
    817.2 KB · Views: 566
Member
Joined 2007
Paid Member
So one cool option is that the ES9028/38 allows you to assign GPIOs to SPDIF input. The default firmware could be altered to allow for that - then you could have 2 SPDIF sources (one consumer level coax, and one TTL/CMOS) without needing any external switching. :) If anyone is interested I can create a branch that does that.

So in short - if you are expecting SPDIF by all means you can still use Cronus. Cronus will provide you a super clean jitter free source - even when you run the DAC itself Async!!! This is not a bad way to go at all!
Thinking about input via GPIO as well as switching between synch and asynch operating modes, I2C makes it trivial to change on-the-fly. I particularly value controlling DAC volume and mute.

I'm curious what other B3Pro users think. What is (or would be) the *very best, most convenient* way to interact with your DACs? I personally use my smart phone via WiFi plus an inexpensive batch of iOS/Android widgets. I investigated using a generic server and Websocket on the BBB so that any web browser on your LAN could control the DAC. It's doable, but a) different users might have to wrangle their own HTML control page code, and b) buttons on the page and/or text I/O would be about as advanced as the interface would get.

What B3Pro control solutions are on your 'wish list'?

Frank
 
Last edited:
Hi Russ, quick tech question here:

I got thrown off a bit when on the Github DIP switch settings page it says PCM rolloff point for the IIR filter adjustment? Is it not the same for DSD?

I send only DSD 256 to the ESS 9038, so am optimizing for only that rate. My understanding is the the FIR filter choices do not apply at all to DSD, and only the second stage IIR filtering applies. So for DSD 256 only input, I just set the IIR filter to its highest cutoff rate (70 kHz) considering that the noise from DSD 256 should be way out there-is this "correct" thinking?

Thanks, the DAC is amazing!
 
Last edited:
Hello peoples.
I have a quandary I am hoping to get assistance with.
I recently killed my buffalo dac (again) and after ordering a new chip it seems to have killed itself so I am hoping for diagnostic assistance.

I'm beginning to question whether the chip is dead or something else is.

So basically out of nowhere the dac chip stopped working and no voltage was present at the output even though the rest of the board was working, although the trident module feeding the dac chip was pulsing every half second.
I assumed the dac chip got fried and ordered a couple more chips.
After soldering the new chip in the voltages returned to relative normality although one channel was showing 1.8v while the other was 1.75 or something which was weird.

I attempted to play music through the dac over the scope to check for a signal but there was none and then within a minute or so it "died" again with the same symptoms as before.
My scope is showing a 540 milihertz square wave pulse on the trident module when the dac is powered on.
I have two trident modules and both of them display this behavior.

I found it strange that the dac stopped working in the first place but now I question whether something else is the issue or if some anomaly killed something else on the board in the first incident which is causing the issue.

Any help? I've spent like over $1000 on buffalo dacs on this point due to my unfortunate luck, I would like a functional dac at some point.