• 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
You are doing cross-over-processing in the BBB ? Really ? I mean for tweeter and woofer ? How ? I thoight you need a big PC for this kind of stuff ? How does it sound ?

You can run a 3-way Linkwitz-Riley crossover up to 192kHz with a BBB. The filters are IIR (not FIR), and they run in ALSA where they automatically adjust to whatever the incoming sample rate may be. Of course, some filter curves sound better than others. I'm using 4th order L-R, which minimize phase effects. Originally this was done using the linux program Ecasound, but that locks the sample rate. Here is a link to a thread on the LADSPA filter set that is best to use:

LADSPA plugin programming for Linux audio crossovers

My contribution was to get the LADSPA filters running in ALSA, which proved tricky but ideal for BBB-Hermes-Cronus. That process was aided by several nice and knowledgeable people who generously helped me learn what was necessary to make it work. A link to that old thread:

LADSPA filters for digital crossovers on the BBB

I would still like to attempt, for comparison, FIR filters. That will probably require one dedicated auxiliary processor per frequency band, operating in synch with the BBB clock. I don't know where the time for that will come from! :eek:

...but the IIR filters can be tweaked so they sound practically as good as well-designed passive speaker crossovers, and so much cheaper than really premium passive components!

Frank
 
Hmmm...I would have thought that it should sound better actually than a passive network, no ?

I guess you would use for the tweeter one BIII and for the woofer another one...with separate power amplifiers driving the speakers directly....so you have a separation between tweeter and woofer...plus a directly coupling to the speakers plus no caps etc in the signal path anymore...that is a lot of good stuff coming together compared to a passive network, no ?
 
Member
Joined 2007
Paid Member
that is a lot of good stuff coming together compared to a passive network, no ?

True! And yet passive crossovers with the very best components can be pleasing too. Ridiculously expensive, but nice! Meanwhile, with LADSPA filters we're manipulating the PCM at a frequency that may or may not contribute artifacts in later steps. In this regard, I have only used the old and new BIIIs with input up sampling enabled. The 9028s in the new BIII, as Brian suggests, are marvelous in managing any junk coming out of the filters. Much better sounding than the still-respectable 9018. So it is my opinion that the fundamental goodness of the new BIII in upsample mode may cure artifacts that used to seem intractable and motivated the endless experimentation for that 'one magic setup'. I just play it and enjoy.

You are correct about advantages of direct amplification from the I/V stage. Amps can be tailored to the signal's need for resolution and power, something I'm still working on. By individually controlling each 9028 via I2C as well as having full control over ALSA, I can compensate at high resolution for basic room acoustic issues, create loudness contours, etc. Basic audio fun! ...much better than spending thousands on unobtanium capacitors, etc. :D But I'm still itching to compare FIR to IIR filters...
 
If you are happy with a terminal interface then the job becomes very simple. I have tried bash scripts but they were not always as reliable for my needs as python. You can trigger the python scripts from bash to do a bit less typing, if you like.

Hi Frank,

Thank you for this helpful comment. For now I'd like to limit my I2C communication with the B3SEpro to the conversation on the shell, mainly in accordance with those control options provided by the firmware switch assignment (including some modifications such as pure sync) by the TPA GitHub page.

Anyway, whether it is bash shell or python to use, I think a set of register address, BIT, Label, etc must be known to control the DAC via I2C. For now I don't have any datasheets related to 9038/9028. This is the main reason I'm not going to try to make my own shell script for I2C communication, though reading source files on the GitHub may work for it.

If you wish to experiment with this, I'm happy to help. Code is already working. We just need to throw away various lines related to my personal needs. I'm not a programmer - I just learn what is needed and try. Bash and Python are easier for those of us who just 'hack'! :D
Either bash or python will be okay. So let me know when you are ready. I'm not in hurry.

BTW it will be of great help if there is any comments from Russ or Brian or miero on this matter.

Regards,
 
Member
Joined 2007
Paid Member
Either bash or python will be okay. So let me know when you are ready. I'm not in hurry.

BTW it will be of great help if there is any comments from Russ or Brian or miero on this matter.

Let's think a bit more about your needs before beginning.

First, removing the firmware chip requires that we add an external reset signal in order to initialize I2C communication, which we would then use for setup and control. I don't know if the reset pin on the B3Pro port expender is isolated - I think not - so if we wanted the BBB to perform a reset via a free GPIO channel then isolation between BBB and Buffalo could be broken. If I recall correctly, the four LEDs on Hermes are not on the isolated side. If they were isolated then they would be a convenient way to achieve B3Pro reset and activate I2C. [Anybody remember?] But you want a clean 3.3v to hold the B3Pro in operating mode. I do that with a separate arduino mini, whose only job upon power-up is to reset the DAC chip. [No sonic effects that I'm aware of...]

Second, if you will be making only occasional changes to the B3Pro setup, perhaps simply adding switches to the port expander would be better. The pins are described here:
Buffalo III SE (Stereo Edition) Pro

The functions they control are described here:
GitHub - twistedpearaudio/Buffalo-III-SE-Pro-On-Board-Firmware

These include DPLL bandwidth and whether the oversampling filter is on or off. As far as I know, you'd be the first to report using this nice interface in the latest Buffalo! But remember that synch mode also requires removing power from the onboard clock, so that might factor into the convenience of your desired modifications.

You can count on my help for full I2C control, if you choose that option.

Best,

Frank
 
-snip-
I don't know if the reset pin on the B3Pro port expender is isolated - I think not - so if we wanted the BBB to perform a reset via a free GPIO channel then isolation between BBB and Buffalo could be broken.

The Hermes-BBB has an isolated I2C header, that was used for I2C communication with the 9018 B3SE using miero's script. So, I think this will not be a problem. Arduino will be okay but I'm not inclined to add it to my system.

Second, if you will be making only occasional changes to the B3Pro setup, perhaps simply adding switches to the port expander would be better. The pins are described here:
Buffalo III SE (Stereo Edition) Pro
Thanks for this info. I occasionally use this blog page which is always helpful.

You can count on my help for full I2C control, if you choose that option.

Best,

Frank
Thank you for your kind help. Well, I'm going to receive ESS9038 datasheet from the ESS distributor in Tokyo today (I sent NDA to them). For a while I will check it to understand how to control the DAC.

Regards,
 
Member
Joined 2007
Paid Member
The Hermes-BBB has an isolated I2C header, that was used for I2C communication with the 9018 B3SE using miero's script. So, I think this will not be a problem. Arduino will be okay but I'm not inclined to add it to my system.

Unlike the 9018, I2C is not active on the 9028/38 merely by supplying power. It requires the reset input to be pulled low briefly after power is stabilized throughout the chip. So an additional logic-level signal is required.
 
During last few weeks, I have assembled buffalo3se 9038 pro dac and finished to build it.
But I'm still having some trouble getting it to work.

I'm using the SPDIF input for a direct connect to the raspberry pi / hifiberry digi+ pro _ spdif output dac source with volumio mpd program.

And the serial inut (pcm/dsd) is connected to the Amanero combo384 or Xmos ddc.

1) Only SPDIF input signal received (led locked light on). That sound is perfect.
Not detect PCM(/dsd) input signal (leds not response). No output sound.

2) After completion, the sound was well by SPDIF input only, but on the 3 days passed the right channel of dac sound was not played.

Maybe the 3.6V AVCC-SR dual regulator board was damaged while checking the voltage of in-gnd-out pins was shorted.

The right channel sound was reproduced normally when replacing it with the old AVCC-SR Regulator board in my buffalo 3se es9018Pro dac.

Dear, Russ.

I want to solution of using the serial input (pcm/dsd).

Regards.


................................ BAZA ...... : Blog
 
Last edited:
  • Like
Reactions: 1 user
During last few weeks, I have assembled buffalo3se 9038 pro dac and finished to build it.
But I'm still having some trouble getting it to work.

I'm using the SPDIF input for a direct connect to the raspberry pi / hifiberry digi+ pro _ spdif output dac source with volumio mpd program.

And the serial inut (pcm/dsd) is connected to the Amanero combo384 or Xmos ddc.

1) Only SPDIF input signal received (led locked light on). That sound is perfect.
Not detect PCM(/dsd) input signal (leds not response). No output sound.

2) After completion, the sound was well by SPDIF input only, but on the 3 days passed the right channel of dac sound was not played.

Maybe the 3.6V AVCC-SR dual regulator board was damaged while checking the voltage of in-gnd-out pins was shorted.

The right channel sound was reproduced normally when replacing it with the old AVCC-SR Regulator board in my buffalo 3se es9018Pro dac.

Dear, Russ.

I want to solution of using the serial input (pcm/dsd).

Regards.


................................ BAZA ...... : Blog

It is important to review the firmware settings prior to operating the DAC.

Buffalo III SE (Stereo Edition) Pro
 
Hi Frank,

Thank you for this helpful comment. For now I'd like to limit my I2C communication with the B3SEpro to the conversation on the shell, mainly in accordance with those control options provided by the firmware switch assignment (including some modifications such as pure sync) by the TPA GitHub page.

Anyway, whether it is bash shell or python to use, I think a set of register address, BIT, Label, etc must be known to control the DAC via I2C. For now I don't have any datasheets related to 9038/9028. This is the main reason I'm not going to try to make my own shell script for I2C communication, though reading source files on the GitHub may work for it.

Either bash or python will be okay. So let me know when you are ready. I'm not in hurry.

BTW it will be of great help if there is any comments from Russ or Brian or miero on this matter.

Regards,

I am happy to review the project! :) Put it up on github (maybe I just missed the link?) and I will take a look.

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. It is important never to try to configure the DAC until you are certain it is getting your I2C messages :) That can be accomplished several ways.
 
Hi Russ, thank you for your encouraging comment.

I am happy to review the project! :) Put it up on github (maybe I just missed the link?) and I will take a look.

It is not on github, though I have an account.

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.
I took the latter method because my BBB is always connected to the B3SEpro via Hermes-BBB and I've confirmed that I can communicate with the DAC via I2C by making the RESET pin in active high (using the isolated header on the BBB-Hermes) as shown below.

Code:
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: 20 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- UU 
40: -- -- -- -- -- -- -- -- 48 -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --
Referring to the ES9028_38.h and Buffalo.c on your Github page, I modified the original script by miero and I've got a sort of success in controlling the DAC so far. Attached here is my current (of course temporary) script. However, there are still problems remaining mainly because of limited info on the register addresses: how to set OSF_bypass or , how to set 128fs, etc. I'll be happy to hear any advice from you.

Regards,
 

Attachments

  • se.zip
    895 bytes · Views: 66
I am happy to review the project! :) Put it up on github (maybe I just missed the link?) and I will take a look.

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

The script is not complete but at least I believe that I'm now listening to the same 128fs sound with it as the one with sync-mode firmware. Any modifications for a better script will be welcome.

Regards,