One of our happy HiFiBerry DAC users send a letter to the editors of the German computer magazine c’t – thank you!
Category Archives: Finished
HiFiBerry Digi pre-order started
Our new digital output board for the Raspberry Pi – the HiFiBerry Digi. can be pre-ordered now for our a special introductory price. We expect to ship the first units about mid of February.
The HiFiBerry Digi adds an optical and a fully isolated electrical output to your Raspberry Pi. Samples rates up to 192kHz/24bit are supported on both outputs.
Linux driver development has been finished already, production samples were tested. Everything works very well.
If you don’t solder the RCA or phone jacks onto the HiFiBerry PCB, you can use small RCA jacks mounted on the top of an existing plastic Raspberry Pi case. Just drill two holes into the case, mount the RCA connectors, and connect them by short wires to the L/GND/R connector on the Raspberry Pi board. Note, that in our example, there are no video-out, line-out and USB connectors on the board. But this will also work with a fully populated board. We just used one of our test boards where some connectors had been removed before.
Another look on our workbench
I’ve compile the Linux 3.10 kernel with HiFiBerry support. You can download the tar file from the HiFiBerry website. The archive includes the updated Raspberry Pi firmware for kernel version 3.10. Therefore it should work even on systems that run Linux 3.8 now. However I cannot guarantee, that it will work on all configurations. Therefore use it on your own risk.
HiFiBerry DAC – update on production status
During the last 2 days we’ve tested our production samples of the HiFiBerry DAC. The quality is very good and no problems have been found. This means, that DAC should be available soon – as planned.
Linux 3.10 sucessfully installed on RaspyFi
Today I replaced the Linux 3.8 kernel on my RaspyFi installation by the new 3.10 kernel. Comparing both versions, the sound subsystem for SOC chips is now much cleaner than before. Hardware drivers are the same for “normal” PCs and SOCs. That means drivers developed for the Raspberry Pi can be reused also on all other Linux platforms. Also the driver is split now in a low-level device driver that directly communicated with the chipset and a higher-level sound card driver, that is used for a specific sound card.
At the moment HiFiBerry Mini (now called HiFiBerry DAC) is the only sound interface supported in this version. But I started working on a driver for the upcoming HiFiBerry Digi.
But first lets check out this output:
[email protected]:~$ uname -a
Linux Raspyfi 3.10.19+ #1 PREEMPT Sun Dec 1 14:21:39 CET 2013 armv6l GNU/Linux
[email protected]:~$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: sndrpihifiberry [snd_rpi_hifiberry_mini], device 0: HifiBerry Mini HiFi pcm5102a-hifi-0 []
Subdevices: 1/1
Subdevice #0: subdevice #0
Looks cool :-)
P.S. Upgrading from Linux 3.8 to Linux 3.10 also needs a newer firmware. I will update the kernel compilation guide on the next time.
HiFiBerry DSP Light: Prototyping started
Our DSP project for the Raspberry Pi has reached the next milestone: hardware prototyping. The digital part of the circuits is working. There was still a minor bug (wrong pinout of a transistor) that was easy to correct by soldering the transistor on its back. The rest of the circuit worked well. As you can see on the picture, the analog part is not assembled yet. First I want to be able to upload the software to the chip.
Unfortunately, the simple approach to upload the program did not work. The chip simply did not acknowledge any I2S requests. Soldering some cables and connecting the I2S bus to the logic analyzer showed some unexpected behavior. While I2C read requests did not work, there was no problem with write requests. What happened? I had a look at the datasheet again and I think, I found the problem. Before every read request, the chip expects a write request with the address to read. However, both requests have to be in the same I2C transaction. The chip expects multiple start bits. Unfortunately, the Python I2C library that I wanted to use does not support multiple starts. It seems that I have to use the lower-level device driver of the operating system to upload the software to the chip.