text:
I have come to the realization that audio diy never ends. There is never the "final" project. There is always tweaking, a new mod, new stuff. Thus I decided to use a cardboard box as an enclosure. Much easier to work with, simple tools would do.
Many would consider a proper enclosure a must for a diy project, but for me this is good enough. Here is a nice looking Lenovo tablet box.
Three separate transformers were used:
- DAC supply transformer: salvaged from an VCR from the time that linear supplies were still being used. These transformers are very nice, having at least 2 hefty 9V secondaries. The secondaries feed a TPA dual PS which is used as a pre-regulators for the DAC supplies. The two capacitors hanging off the transformer provides DC to an LED (to indicate power 0n/off)
- Analog supply transformer: 15×2 toroidal transformer. (Got it from Twisted Pear Audio)
- Controller transformer: 6V DC salvaged from a wall-type supply, upgraded the smoothing capacitors
Water bottle caps are perfect for the feet.
Used a quad-supply board. This board is designed to provide 4 x 3.3V/5V regulated output. Two supplies receives pre-regulated DC, two supplies receive AC (thus the larger filter capacitors).
Two of the regulators were modified to provide 14.2 V (1.4V+6.4V+6.4V) for the opamp by shorting pins 4 and 5 to GND. They are also configured to provide +/- 14.2V by tying the +output of one of the regulators to GND (I followed what diyinhk did for their dual +/- supply [link])
Standard build. Only "upgrade" are the electrolytic capacitors. On the backside, the jumpers are to connect the I2C lines to the separate I2C header because I forgot to short the lines on the front side before I soldered the connector (which blocked the jumpers). Later I will upgrade the opamp.
There is a separate SPDIF input connection that feeds the GPIO2 pin in the DAC. Selecting this GPIO pin for SPDIF input has been enabled in the code.
GPIO1 is configured in the board to be in input selection pin for manual selection of I2S/SPDIF. My code does not enable this mode because the selection can be done directly through the user interface. This is here for manual selection with a switch and requires that the chip be programmed in such a way. I believe the diyinhk XMOS interface would program the chip to allow manual selection of SPDIF input.
The board comes with an NDK 80 MHz oscillator [link]. Other implementations may use a 100MHz clock. The software support both 80 MHz and 100 MHz clocks.
In addition, a separate supply can be used to power the clock by cutting the power trace and connecting the supply to the through-hole vias.
The external 5V powers a single regulator for the analog 3.3V AVCCR and AVCCL. . The second regulator provides 3.3V to in chip internal oscillator (I think in order to support an external quartz crystal instead of an oscillator). The regulators are marked "LLVB" and are TI LP5907 Ultra Low Noise regulators for analog applications [link]. They rank near the top among ultra low noise regulators [link].
The external 3.3V is used directly without further regulation to power the digital side of the chip and also the local oscillator.
Power to the oscillator is further filtered by a ferrite bead
Positive and negative supply voltage are taken directly to power the opmap.
The board has connection for the differential outputs straight out of the DAC chip and also single ended output through the opamp. I am using the single ended output wired to a mini-plug for connection to a headphone amplifier. The opamp provided is a NE5532 dual operational amplifier [link]
Nice, solid ground-plane
ES9018K2M Code Fully Tested
A new version of the code has been posted in the CODE tab [link].
This version has been fully tested with an Amanero USB interface [link] connected to the DIYINHK DAC board with an 80 MHz clock. Both PCM and DSD files of various sample rates were used together with foobar [link]
Make the proper adjustment for your specific implementation in the code.
/******************* Code Customization Section *********************/ /* First: Choose the clock frequency you have and comment the other */ #define USE80MHZ //#define USE100MHZ /* Second: Choose stereo or mono | CONFIGURATION | #define DUALMONO | #define STEREO | |---------------------|------------------|------------------| | Dual mono | un-comment | comment | | Stereo | comment | un-comment | |---------------------|------------------|------------------| */ #define STEREO //#define DUALMONO /* Third, optionally choose the number of inputs. 6 is the max without modifying the code. You could lower the number of input choices here. for example if you only want to see 2 choices, modify the code like this: #define ICHO 2 */ #define ICHO 6 /* Fourth, optionally change the name of the inputs. Keep 6 characters Use blanks if necessary. If you use less number of inputs, only the top ones matter. */ char no0[] = "INPT-A"; char no1[] = "INPT-B"; char no2[] = "INPT-C"; char no3[] = "INPT-D"; char no4[] = "INPT-E"; char no5[] = "INPT-F"; /* These inputs choices can be virtual or real. In the ES9018 there were 8 data lines. One could simultanously connect one I2S/DSD input plus 3 additional SPDIF input (thus 4 physical inputs). In the ES9018K2M there are two additional input lines for SPDIF so one can potentially connect one I2S/DSD input plus 2 additional SPDIF inputs.In addition one could choose different parameters -such as the DPLL bandwidh or filter selection- */ /* Fifth, adjust the interrupt routine to match your rotary encoder by adjusting the mode parameter in the following routine (search for it in the code): "attachInterrupt(0, rotEncoder, LOW);" The mode parameter defines when the interrupt should be triggered: LOW to trigger the interrupt whenever the pin is low, CHANGE to trigger the interrupt whenever the pin changes value RISING to trigger when the pin goes from low to high, FALLING for when the pin goes from high to low. You can also read the following link: http://hifiduino.wordpress.com/2011/09/12/problems-with-rotary-encoders/ */ /***************** End Code Customization Section *******************/
This code should also work with syllable's DIY DAC [link] which is also described in this builders thread [link]
S/W Control for ES9018K2M
Here is the initial public release of the s/w control code for the NEW ES9018K2M DAC [link]. This project was completed at this (early) time due to the insistence of "syllable" at diyaudio who is running a group buy for his DAC board [link].
Download the code here [link]
The code is based on the ES9018 code and supports revision V of the chip ("E" marking in the third row of the text). It is also based on the 5/15/14 version of the official data sheet (available through authorized distributors and under NDA)
(As compared to what is available in the older ES9018 DAC)
- Support for a minimum phase FIR filter
- Support for separate DPLL settings for I2S and DSD (16 settings for each)
- Support for FIR filter (oversampling) bypass AND IIR filter bypass
- Exposed De-emphasis filters
- Enabled balance control in 0.5 db increment
I will be using the diyinhk implementation of the ES9018K2M (it is already populated and ready to use. I realize that I am getting to lazy to start with bare boards and some the surface mount chips I cannot properly solder).
The power supply is an older quad-supply board also from diyinhk which I've hacked to also provide +/14.x v. in order to power the opamp
Using my latest favorite Arduino clone (only $10) [link]. The two small boards hanging on the pins are a LCD backlight control and a 5V to 3.3V level converter. As I realize that this audio diy hobby is never ending, I figure doing things the easy way trumps doing things the neat way (like for example using an Arduino shield) so I soldered the wires directly on pins that I plug into the board.
Got an engineering sample of this new embedded board solution from iTead Studio. It is based on the Allwinner Technology A20 Dual Core SoC (The same processor as the Cubietruck board). iBox is being crowd-funded at indiegogo [link]. At $70 including power supply and case is an incredible deal.
The iBox is an example implementation of the modular approach that iTead is developing. A "system" can be configured with a "core board" and a "baseboard". Thus iBox is a core board plus a baseboard and plus a case.
The case is made of gray-anodized aluminum with a plastic top and a steel bottom. (I added some rubber feet)
Here is compared to the size of a uSD card
Front side: uSD card reader, status LED and IR receiver
Side: Multi-function expansion connector
Back side: Peripheral connectors
The Core board
The A20 core board [link] is designed as a "computer on a module" and consists of
The core board is designed as a bare minimum computing module that breaks out most of the I/O pins and buses through two rows of pin headers. The approach also is to "standardize" the pin-header form-factor to allow mixing and matching with baseboards in order to suit different requirements. In addition, this approach provides an upgrade path to newer or different processors.
A20 SoC and DDR3 RAM (The GT chips, each 512MB). The 4 GB Flash should be in the back side of the board.
The Power Management Unit, AXP209
24MHz oscillator
Detail Connection to baseboard
iBox Baseboard
The baseboard in iBox is designed to provide peripheral interfaces and connect to a core board. The iBox baseboard is one of different baseboards that iTead is developing and as one of the first implementations, it aims at wide appeal by providing the most common I/O interfaces.
USB Hub: GL850G Hub
Ethernet Interface: Realtek RTL8201CP
The board has a 3 Amp switching regulator, the MP2307 set at 5V. The input range of the regulators is 4.75V to 23V.
uSD Card reader, IR receiver and LED indicator
Multi function expansion connector
USB and HDMI connectors
SPDIF Toslink optical connector, Ethernet and power connector. The bundle supply is rated a 9V, 2 Amp
Summary of iBox baseboard interfaces and connectors:
- Power connector
- 5V regulator (MP2307)
- Four 2.0 USB ports (Integrated GL850G Hub)
- HDMI port,
- Ethernet interface (Integrated Realtek RTL8201CP 100M transceiver)
- SPDIF optical (Digital Audio Output)
- U-boot button (Universal Bootloader. U-boot to embedded boards is like BIOS to PC motherboards)
- uSD care reader
- IR receiver (for remote control)
- Status LED indicators
- 32-pin multi-function expansion interface providing the most common interfaces
- Video output
- Serial Interface
- Debug interface
- SATA Interface
- Analog audio In
- Headphone Out
In fact there will be an expansion board [link] available with SATA connectors plus other connectors
Since this site is dedicated to audio, we will focus a bit on the audio capabilities of iBox
According to the datasheet, The A20 has the following built-in audio features:
Analog Output
- 16bit, 24-bit data
- 44.1KHz, 48KHz, 96KHz and 192KHz sample rate
- 100 db SNR
- Analog/Digital volume control (62 steps)
- Stereo headphone amplifier (capless). dedicated headphone output
Analog Input
- ADC: 24-bit, 8KHz to 48KHz, 96 db SNR
- Line-in Stereo or one differential
- Two Microphone input
- Stereo FM input
Here is the analog/headphone output diagram:
The iBox has a built-in SPDIF/Toslink connector. According to these discussions [link], the SPDIF output supports:
- 16bit data
- Up to 192KHz sample rate
- Resolution: 16bit, 20bit and 24bit
- Sample rates: 8KHz to 192 KHz
- Format: I2S, Left Justified, Right Justified
- Frame (BLCK): 16bit, 20bit, 24bit and 32bit
I've previously described the I2S capabilities of the A20 processor here [link]. The A20 datasheet (p.20) [link] specifies that the chip supports up to 8 channels of I2S output (DO0 to DO3 represent the 4 stereo channels of I2S data).
I2S support in the core board
In the Itead A20 core board pin schematic [link] we can see that the I2S pins are available and connected to the pin headers (PB5 to PB11):
I2S support in the baseboard
Looking at the schematic of the iBox base board, pins PB5-PB11 are not connected to the expansion header. However, PB5-PB11 pins are available on the underside of the base board (they are just soldered without connecting to anything) and can be easily tapped.
I shall get familiar with the software environment and report shortly in the next post…
The A20 SoC was announced about a year ago. I have to admit, I had never heard of this company. A bit of digging uncovered that this company is fast becoming a dominant player in the SoC market:
You may never have heard of Allwinner but they are huge and as of CES now have an 8-core tablet part on the market. With the release of the A80 SoC and the OptimusBoard that SemiAccurate used, the company is well positioned for the mainstream tablet market in 2014.
Allwinner rarely makes the headlines because they don't make bleeding edge products that go in to high-end phones and tablets, instead they make mainstream SoCs that go in to high volume tablets. This mid-range market has decent margins, huge volumes, and since they don't target phones directly there are no radio hassles and regulation to deal with. How big is Allwinner? Huge. Continue reading: [link]
The most interesting part of this company is their announcement to join Linaro's newly formed Digital Home market segment group as a founding member together with media behemoth Comcast (and others). This means that there will be more video and audio applications coming our way.
Linaro Ltd, the not-for-profit engineering organization developing open source software for the ARM® architecture, today at Linaro Connect Asia 2014 (LCA14) in Macau announced* that …
Allwinner Technology is a founding member of a new market segment group being formed in Linaro to focus on the Digital Home market. This group will be the third Linaro segment group, following the formation of the Linaro Enterprise Group (LEG), focused on ARM servers, and the Linaro Networking Group (LNG) focused on the networking equipment market space.
The list from iTead should work as is. Others are compatible with the A20 SoC, but may require additional work to support the peripheral components.
- iTead Documentation and Download Repository [link]
- Audiophile bit-perfect with the A10 [link]
- CNX Software Blog. Developments on embedded computing, including news on Linaro [link]
- Review of A20 built-in DAC and headphone output [link]
It is almost ironic that the quest for a "perfect audio appliance" which led us to the "simpler", low power (the BBB consumes less than 5W) and light-weight world of embedded Linux, has also led us to the incredibly complex world of Linux audio.
Because of its long evolution, long list of requirements from both sound professionals and consumers, and open development environment, many audio subsystems have flourished, each having their own set of unique features, duplicating features from each other, providing interfaces to as many applications (even legacy applications) as possible and attempting to interfaces to each other.
Here is a depiction of Linux audio (circa 2008) [link]:
According to TuxRadar [link],
There's a problem with the state of Linux audio, and it's not that it doesn't always work. The issue is that it's overcomplicated. This soon becomes evident if you sit down with a piece of paper and try to draw the relationships between the technologies involved with taking audio from a music file to your speakers: the diagram soon turns into a plate of knotted spaghetti. This is a failure because there's nothing intrinsically more complicated about audio than any other technology. It enters your Linux box at one point and leaves at another.
To and audio application, Linux audio provides several audio subsystems through which audio can be channeled: ALSA, PulseAudio, Jackd, OSS and others. An application can use anyone of these subsystems and in fact they do in order to provide wide appeal and compatibility.
Here is a very simplified and high diagram describing the different audio subsystems and their relationship [link]:
And application can literally take any route through the different components in order to arrive at the hardware. An application can use Alsa, routed through Jack and back to Alsa; or it can use PulseAudio to OSS or Alsa all the way. Audio applications such as MPD can use either ALSA, PureAudio or OSS in order to appeal to a wider audience and provide compatibility to new, old and in-between versions and flavors of Linux.
In our quest for bit-perfect audio, A reasonable approach to simplify the audio path is by minimizing the number of components through which the audio stream can possibly travel.
A practical way to do this is to direct the application to use a single audio subsystem. In our case, restricting to ALSA looks like a good option since it is already included in the Debian BBB release. (At least PulseAudio and Jack are are installed when installing MPD)
This site [link] also has a good overview of the different sound subsystems in Linux. A graphical description of ALSA is as follows:
The key message here is that ALSA looks like a "simple" interface between an audio application and the hardware and that there is a Mixer (Sound Mixing) outside the Kernel that CAN can potentially be bypassed. And indeed it can be bypassed:
A sound developer who wishes to output sound in their application can take any of the following routes with ALSA:
- Output using ALSA API directly to ALSA's Kernel API (when sound mixing is disabled)
- Output using ALSA API to sound mixer, which outputs to ALSA's Kernel API (when sound mixing is enabled)
- Output using OSS version 3 API directly to ALSA's Kernel API
- Output using a wrapper API which outputs using any of the above 3 methods
A further simplification is to restrict the use of ALSA through the ALSA API (a more modern API) and avoid using the OSS v3 API (Legacy API). This may not be an issue as modern applications do not have a need to use the older OSS v3 interface.
Since Volumio and RuneAudio are using MPD, It is a good idea to select MPD and figure out how it works. MPD simply runs in the background playing music from its playlist. Client programs communicate with MPD to manipulate playback, the playlist, and the database. [link]
Configuring MPD to use ALSA
The mpd configuration file is at /etc/mpd.conf. (The default configuration for mpd -as installed for debian, uses ALSA.)
The MPD documentation [link] indicates that it is capable of outputting to 15 plugins (ALSA, PulseAudio, OSS, etc). The configuration file allow the selection of the output plugin. Here is the example for selecting ALSA as the output of MPD:
To configure an audio output manually, add an
audio_output block to
audio_output { type "alsa" name "my ALSA device" device "hw:0" }
Further, the configuration allows us to disable and bypass any mixing/resampling of the audio data. I've highlighted in red the important parameters.
The following table lists the
audio_output options valid for all plugins:
Additional ALSA specific fields can be added according to this table (ALSA uses libasound)
|Sets the device which should be used. This can be any valid ALSA device name. The default value is "default", which makes
libasound choose a device. It is recommended to use a "hw" or "plughw" device, because otherwise,
libasound automatically enables "dmix", which has major disadvantages (fixed sample rate, poor resampler, …).Note: the default device can be set in the ALSA configuration file. The default device can be set to "hw" type and thus bypassing "dmix" the ALSA mixer.
|If set to
yes, then
libasound will try to use memory mapped I/O. Here is an example using this parameter [link]: "yes" # Minor speed improvement, should work with all modern cards
|Sets the device's buffer time in microseconds. Don't change unless you know what you're doing. Note: etc/mpd.conf states: MPD Internal Buffering: ****** This setting adjusts the size of internal decoded audio buffering. Changing this may have undesired effects. Don't change this if you don't know what you are doing: audio_buffer_size "2048". ******This setting controls the percentage of the buffer which is filled before beginning to play. Increasing this reduces the chance of audio file skipping at the cost of increased time prior to audio playback: buffer_before_play "10%"
|Sets the device's period time in microseconds. Don't change unless you really know what you're doing.
|If set to
no, then
libasound will not attempt to resample, handing the responsibility over to MPD. It is recommended to let MPD resample (with libsamplerate), because ALSA is quite poor at doing so.
|If set to
no, then
libasound will not attempt to convert between different channel numbers.
|If set to
no, then
libasound will not attempt to convert between different sample formats (16 bit, 24 bit, floating point, …).
|If set to
yes, then DSD over USB according to the proposed standard by dCS and others is enabled. This wraps DSD samples in fake 24 bit PCM, and is understood by some DSD capable products, but may be harmful to other hardware. Therefore, the default is
no and you can enable the option at your own risk.
Thus in the MPD configuration we can:
- Specify ALSA as output plugin
- Specify that no mixer should be used in audio output plugin
- Specify that no volume adjustment be applied
- Further disable "dmix" the ALSA mixer (#2 may do the same thing. But you never know…)
- Further disable resampling in the output (dmix?)
- Optionally enable DSD over USB
Here is a guide on setting up MPD that will illustrate some of the parameters discussed above [link].
Configuring sample rate converter in MPD
Now that we've taken cared of the output plugin configuration, we need to ensure that other MPD plugins do not do sample rater conversion and/or mixing.
MPD can use one of the following sample rate converter:
- Internal (built in into MPD, low overhead, low quality)
- Sox (provided by libsoxr [link])
- Secret Rabbit Code (provided by libsamplerate [link])
Both libsoxr and libsamplerate can be compiled into MPD so they may be already available in the MPD package. After installing the package mpd in Debian/BBB further request for libsamplerate and libsoxr fails to locate these libraries, likely indicating that these have already been compiled into mpd (I am using "mpd" and "MPD" interchangeably).
SRC (libsamplerate) provides a small set of converters to allow quality to be traded off against computation cost. The current best converter provides a signal-to-noise ratio of 145dB with -3dB passband extending from DC to 96% of the theoretical best bandwidth for a given pair of input and output sample rates. [link] -The MPD documentation lists 97 db SNR [link]. Not sure how the two figures are related.
The MPD documentation says:
The setting
samplerate_converter controls how MPD shall resample music.
If MPD has been compiled with libsamplerate support, this setting specifies the sample rate converter to use. Possible values can be found in the mpd.conf man page or the libsamplerate documentation. By default, this is setting is disabled.
Possible values:
|The internal resampler. Low CPU usage, but very poor quality.
soxr very high"
|Use libsoxr with "Very High Quality" setting.
soxr high" or "
|Use libsoxr with "High Quality" setting.
soxr medium"
|Use libsoxr with "Medium Quality" setting.
soxr low"
|Use libsoxr with "Low Quality" setting.
soxr quick"
|Use libsoxr with "Quick" setting.
Best Sinc Interpolator" or "
|libsamplerate: Band limited sinc interpolation, best quality, 97dB SNR, 96% BW.
Medium Sinc Interpolator" or "
|libsamplerate: Band limited sinc interpolation, medium quality, 97dB SNR, 90% BW.
Fastest Sinc Interpolator" or "
|libsamplerate: Band limited sinc interpolation, fastest, 97dB SNR, 80% BW.
ZOH Sinc Interpolator" or "
|libsamplerate: Zero order hold interpolator, very fast, very poor quality with audible distortions.
Linear Interpolator" or "
|libsamplerate: Linear interpolator, very fast, poor quality.
It appears that there is no "off" setting, so that MPD will always attempt to resample audio in order to match the capabilities of the downstream components. There doesn't seem to be a way to remove all the resamplers even by removing libsamplerate and libsoxr because there is always the internal resampler of MPD. In the case of the mpd package for debian, it is likely that libsamplerate and libsoxr have been compiled with mpd, so removal is not possible.
It is also reasonable to assume that if the "samplerate_converter" setting is not used in the config file (the default condition), a default sample rate conversion method would be applied.
We already have a way to disable "dmix" in ALSA which defaults to 48KHz, so there is no need for MPD to resample to 48KHz to meet the requirements of dmix. The only remaining sample rate requirement is the capability of the hardware. It is therefore reasonable to assume that if the hardware is capable to supporting the sample rate of the audio file, then no resampling would be performed.
According to these sites [link]. [link]
There are 3 configurations files that are read every time an ALSA device is opened:
- Default configuration file (comes with ALSA and should not be changed): /usr/share/alsa/alsa.conf
- System wide configuration file (optional): /etc/asound.conf
- User configuration file (optional, residing in the users home directory): $HOME/.asoundrc
There is no need to write a configuration file since the default is always present. However, for our purpose we want to ensure that the data is sent to device without any mixing or resampling by ALSA
Recall from the ALSA-specific settings above:
It is recommended to use a "hw" or "plughw" device, because otherwise,
libasound automatically enables "dmix"
Thus we wish to define a "hw" device. For our purpose we create a /etc/asound.conf file with the following entry:
pcm.!default { type hw card 0 }
The exclamation sign causes the previous definition of pcm.default to be overridden (so we don't have to worry about the default configuration file /usr/share/alsa/alsa.conf)."card 0″ is the audio device we wish to use. It could be "card 1″ or other. See below to determine what to use. "type hw" is used as recommended.
If sample rate conversion is needed, we can use the "plug" type
Use the following entry in /etc/asound.conf
pcm.!default { type plug slave.pcm { type hw card 0 } }
I used this guide [link] to explore and identify the different ALSA components in the Debian distribution for BBB
The presence of /proc/asound directory indicates that ALSA is present:
The file /proc/asound/cards tells you which sound cards are present in the system. Here is BBB without any external devices. It says there is a native sound device.
The file /proc/asound/devices tells you the features of the cards. The native sound device is an audio playback device.
The file /proc/asound/pcm gives us more detail on the "digital audio playback" (PCM). Here we find that the audio device is provided by the HDMI interface.
The simplest say to identify which cards are installed in the system is to use "aplay -l" [link]. This gives the same info as /proc/asound/cards and /proc/asound/pcm
Further information on the device capabilities can be obtained from the file /proc/asound/card0/pcm0p/sub0/hw_params. It requires that a track is being played. Notice we use "card0″ because the card has been identified as "card0″
alsacap serves to list the sampling rates, number of channels and sample formats supported by installed sound cards and their ALSA drivers. This helps to find out which parameters do not require resampling (something to be avoided) and to troubleshoot ALSA problems [link]
However, the tool is only available as source so it needs to be compiled. Here is a sample output from here [link]
$ alsacap *** Scanning for playback devices *** Card 0, ID `SB', name `HDA ATI SB' Device 0, ID `VT1818S Analog', name `VT1818S Analog', 1 subdevices (1 available) 2..8 channels, sampling rate 44100..192000 Hz Sample formats: S16_LE, S32_LE Subdevice 0, name `subdevice #0' Device 1, ID `VT1818S Digital', name `VT1818S Digital', 1 subdevices (1 available) 2 channels, sampling rate 44100..192000 Hz Sample formats: S16_LE, S32_LE Subdevice 0, name `subdevice #0'
Unlike a PC, a reboot is required for the system to detect the presence of a USB audio device.
After connecting a TI PCM270x-based device (USB 1.1)
After connecting DIYINHK XMOS-based device (USB 2.0)
After connecting AMANERO board (USB2.0)
As can be seen, these cards are all automatically recognized by BBB.
diyaudio's MIERO has developed a driver to enable I2S output in the BBB [link].
It requires that the HDMI output be disabled (since it shares the same lines with Audio I2S). In my installation, the line to disable HDMI is already there as a comment, so I just had to un-comment it and reboot.
With HDMI disabled (and no other device in the USB port) -no sound cards detected:
Here are the instructions (copied from the site) to download and install the I2S driver for BBB/Debian. You can just copy each line and paste it in the PuTTY windows (paste by clicking the right mouse button.
download and extract driver wget http://bbb.ieero.com/botic_driver_v3.tar.gz tar xvzf botic_driver_v3.tar.gz install driver (assumes official BBB Debian release) cp -av botic_driver/firmware /lib/ cp -av botic_driver/modules.bbbdebian/* /lib/modules/ update module dependencies depmod -a load driver (Needed after every boot) echo BB-BONE-BOTIC1 > /sys/devices/bone_capemgr.*/slots There are 3 configurations for the driver BB-BONE-BOTIC1 - this is for BBB without cape - onboard clock (48fs rates only) BB-BONE-BOTIC2 - onboard clock (48fs rates) - external clock (44k1fs rates) - external clock switch on UART1_TXD (pin configurable via DT) BB-BONE-BOTIC3 - external clock (48fs rates) - external clock (44k1fs rates) - external clock switch on UART1_TXD (pin configurable via DT)
aplay -l shows the following
The I2S pins are the following:
Rather than testing with MPD which might invoke its resampler by default, we will use aplay (alsa player) which does not have a resampler of its own. It is a lightweight player for alsa.
I compiled a collection of tracks from 44KHz to 384KHz
Type=hw: bypassing the mixer
The entry in /etc/asound.conf is as follows:
pcm.!default { type hw card 0 }
Using this configuration requires that the source file matches both the bit depth and sample rate supported by the hardware. For example, if using the BOTIC driver (which enables I2S output) which is set as 32bit device, you cannot play 16bit nor 24bit files. The error message indicates that only "S32_LE" (Signed 32 bit Little Endian) is supported:
Type=plug, enabling the ALSA mixer
The entry in /etc/asound.conf is as follows:
pcm.!default { type plug slave.pcm { type hw card 0 } }
The result is that "dmix", the alsa mixer is invoked. With a reputation of being bad, hopefully it does fine with bit-stuffing (e.g., converting 16 bit to 32 bit by appending zeros)
Testing the BOTIC driver we obtain the following results:
Playing a 44.1KHz file. We expect conversion to 48KHz because the native I2S in BBB only supports 48KHz and its family of sample rates. And indeed, this is what we find. The first screen shows playing the 44K file; the second screen shows the contents of /proc/asound/card0/pcm0p/sub0/hw_params showing that it is outputting 32-bit 48KHz. Thus we see dmix in action, doing sample rate convertion
Playing a 192KHz. We expect no sample rate conversion as this is natively supported by the BBB, but dmix will convert from 24 bit to 32 bit. Indeed, this is what we find. The first screen shows playing the 192K file; the second screen shows the contents of /proc/asound/card0/pcm0p/sub0/hw_params showing that it is outputting 32-bit 192KHz. We hope that dmix is just bit-stuffing…
If playing 176KHz, ALSA resamples to 192KHz.
I set up a network share by inserting a USB memory stick to the Airport Extreme WiFi router.
- Address of Airport Extreme: 10.0.1.1
- Name of memory stick: MUSIC (later I changed it to MUSICUSB), fat32 formatted
- password for share: XXXX
1- install the "cifs.utils" package with "apt-get install"
2- mount the share with the following command
- mount -t cifs does the same thing (it invokes mount.cifs)
- "//10.0.1.1/MUSIC" is the share on the Airport Extreme "MUSIC" is the name of the USB Stick inserted in the Apple Airport Extreme router
- "/media/nas" is the mount point. I created the "nas" directory under /media
- "-o" is the options flag
- "username=any" means no user name is needed (as it is set up in the AE)
- "password=XXXX" is the password used to secure the share (as setup in the AE)
- "sec=ntlm" is the password security mode. Without it you'll get an "error (22): invalid argument"
- More info here [link]
Here we will use /etc/fstab and mount the share at boot time. The network share is seldom removed, so mounting it during boot is the best option. I use the following line:
- Here I had changed the name of the USB Memory device to "MUSICUSB"
- This assumes that your network share is always the same name
- More info here: [link]
BEAGLEBONE BLACK: ACCESSING uSD AND USB STORAGE
ACCESSING THE uSD CARD
Once the operating system is flashed to the internal eMMC, the uSD card can be used as storage and it is a convenient means to store music tracks.
The command "fdisk -l" will list all the storage devices seen by the operating system:
Here is without any devices in the uSD slot. Listed is the internal eMMC storage device (listing only relevant parts):
After inserting a 32MB uSD card we see this additional device:
After inserting a 2 GB uSD card we see this device instead:
We realize that the any card inserted in the uSD slot is characterized by "/dev/mmcblk1p1″. "mmc" stands for "multimedia card" -both SD cards and eMMC devices conform to the "multimedia card" specification. "blk1″ I think represents "block device 1″ and "p1″ is "partition 1″
However, if the uSD card is already inserted during, we see the following:
The device is assigned /dev/mmcblk0p1. It appears the the order the device numbers are assigned at boot time is uSD card first, then internal eMMC.
Mounting the uSD card
In order to access the contents on the uSD card, the device must be first mounted. First create a "mount point" (a folder). Here I use the directory /media which is already present. Under /media create a directory to mount the uSD card. I created /media/card, /media/usb and /media/nas to represent the 3 different places where music tracks can be stored.
Use the command "mount"
The "-v" flag in "mount" is optional. Means "verbose". Notice that after mounting the uSD card, I can see the "smallmusic" directory and 1 mp3 track.
Keep in mind that if the uSD card is already inserted at boot time, it is assigned "mmcblk0p1″ instead of "mmcblk1p1″
If digital audio is transmitted through the I2S interface, then the USB host can also be used for a USB memory device.
The same procedure can be used to mount a usb memory stick:
- Insert a USB storage to the USB host connector
- Type "fdisk -l" to identify the device. Notice that it is /dev/sda1
- Type mount /dev/sda1 /"mount point" in my case, mount /dev/sda1 /media/usb
Inserting a USB storage device will show up as:
Since there is only one usb host port, a USB memory device will always appear as /dev/sda1 whether it is present during boot or not.
It becomes cumbersome to have to access the board through the command line in order to mount a storage device. For a music device, the ideal is to have these storage devices mounted automatically.
I tried different ways to auto-mount the devices when they are inserted:
- Autofs: looks like the most promising but did not work in my installation while following this excellent guide [link]
- usbmount: works well with uSD cards and USB storage at any time after boot, but when deleting the X11 package, it wound fail to mount uSD cards. usbmount was last updated in 2007 and is currently unmaintained.
- Add mount instructions in /etc/fstab which is invoked only during boot time.
For now the "best" option in my environment seems using /etc/fstab and ensuring the storage devices are present during boot. This seems a reasonable configuration for an audio player: Insert the storage devices and turn-on the device. Even if switching to another storage device requiring a reboot, the booting process is very short.
usbmount has better functionality because it works after boot. I didn't like the fact that it stopped working for SD cards after I removed the X11 package (which I do not need). I'll wait for more help on autofs and then I think I'll switch to autofs.
For USB I added the following line to the /etc/fstab file.
Note the following:
- Add the "nofail" option. Without it the board will not be able to boot if no USB memory is present in the USB port.
- Ensure that the USB memory has a single partition since we are assuming it is always /dev/sda1. A newly formatted USB memory device will have a single partition
For the uSD Card and assuming that the card is inserted prior to boot, I added the following line:
Insert a uSD card and a USB memory device, boot the board and they will be mounted under /media/card and /media/usb (or whatever directory you had specified in /etc/fstab.
In order to do some useful stuff and have the ability to download applications, the BBB board must have direct access to the internet.
Decided to set up the Ethernet interface with a static IP address. Having a static address allows you to know how to access BBB all the tiem without the need to check the router for the assigned IP address. Choose a large address in order to avoid address conflict with existing assigned IP addresses. Choose and address that is easy to remember. You could also reserve this address in the router.
The way this is done in unix is to edit a configuration file. Since we don't have the luxury of a GUI, everything is done through a terminal window on the command line. Learn to use "vi" or equivalent. vi is universally available in any UNIX/LINUX distribution. For the beginner, using vi is a bit of a pain, but it is easy to master the basics very quickly.
According to the Debian Wiki [link], this is the format:
Modify the entry in /etc/network/interfaces and follow the above format. In the command line type "vi /etc/network/interfaces"
This is how I modified the configuration. I use an Apple Extreme router which defaults to assigning a 10.0.1.x network
And indeed, it is accessible though "10.0.1.101" after connecting it to a wired network (see the address in upper left corner of the tty windows above). It remains also accessible though USB with an IP address of 192.168.7.2 as shown below:
Edit the /etc/resolv.conf file. Change nameserver to be the new gateway: 10.0.1.1.
Originally It was set to the factory nameserver (192.168.7.1). Without this fix, I was not able to resolve domain names through my WiFi connection.
Wanted to try a USB WIFI adapter on the Beaglebone Black board running the official Debian release. I got a hold of the TP-LINK TL-WN725N v2 adapter, a very popular device and retailing for under $10.
As it turned out, no drivers are available for the device from the manufacturer and the device might or might not be supported by the operating system distributed with the BBB board.
According to the Debian Wiki [link]
Currently there are only a few modern WiFi chipsets readily available that work with free software systems. For USB wifi devices this list includes the Realtek RTL8187B chipset (802.11G) and the Atheros AR9170 chipset (802.11N). For Mini PCIe all cards with an Atheros chipset are supported.
WiFi has always been a problem for free software users. USB WiFi cards are becoming less free. With the older 802.11G standard many USB WiFi cards had free drivers and did not require non-free firmware. With 802.11N there is only one chipset on the market from Atheros which is completely free.
This means that there are no assurances that the WiFi device would be supported by particular device and operating combo. This also means that as the technology evolves, it would become more and more difficult to find driver support for WiFi devices.
This particular WiFi device, "v2″ uses the Realtek RTL8188EUS [link] chipset (whereas the v1 uses the RTL8188CUS chipset [link]). It is important to know the exact model number and even the version number because different versions of the device might use different chipset and therefore requiring different drivers.
Fortunately, a driver is available in source (from the chipset manufacturer?) and users have been compiling the source for their particular environment. Here is an example for RPi Raspbian [link].
Unfortunately, I have not come across an installation or this driver for the official Debian on BBB and this (compiling the source) is beyond my skill set and have no real desire to learn it. Additionally, even if you can master these skills every time the operating system is updated, there is a chance that the driver may stop working requiring another round of s/w tweaking. This sounds like a real pain even for us diyers…
The right thing to do is to purchase a device that has ample support from the user community, the manufacturer or the retailer. Here is an example of well supported USB WiFi devices: [link], [link]. Check also the BeagleBone Black H/W info page for supported WiFi devices [link]. Or one can switch to a Rasberry Pi board :-) [link] which seems to have the widest support.
Eventually, there might be a readily available driver for this WiFi device. However, support for wired network has always been included in all Linux OS releases and is trouble-free and rock solid. No need to hassle with wireless dongles with proprietary drivers that might potentially break with newer releases of the operating system.
The TP-Link TL-WR702N Wireless Router [link] is an excellent option to add wireless connectivity to the BBB (or any other device). This multi-mode WIFI device can be set to "client mode" an provide a wired connection to the BBB while connecting to the wireless router. The exact same configuration is used as with wired network.
Additionally, this device is externally powered so that low noise power supplies (the favorite tweak for audio diyers :-)) can be used.
Powering separately has the advantage of having the NANO continually maintain connection with the main router even while the BBB is being power cycled. Optionally, the NANO is a low power consumption device so that it can be powered through the BBB USB port.
Found these photos here [here]
One of the challenges with these low cost boards running open software is the understanding and installation of the operating system and related audio applications (such as MPD). Although RuneAudio and Volumio are solutions aimed at simplifying the installation process and are specifically geared toward audio, It is still beneficial to understand the s/w installation process "from scratch".
As I only have a BBB on hand (I have (Rev B) [link]), my experiences are limited to this particular board.
Every BBB comes loaded with the Angstrom operating system from the factory. After installing the network-over-USB drivers on the PC and powering the board with the included USB cable, you can access the board either through a browser or through a terminal application. The board is "fully operational" but it can't just plat a music track. Configuration of the operating system is required. In addition a more functional music player is also required.
There are many ways of installing and setting up the s/w. And there are all pretty similar. Here are a two notable guides for installing the operating system and the music player application MPD.
But every situation and environment is a bit different and thus I shall also share my experiences :-)
The first thing to determine is which OS? We know BBB comes with Angstrom but there are many other versions available. It is a good idea to limit the choices to the "officially supported" choices to minimize potential incompatibilities problems. The current "official" images can be found here: [link].
As of today, there are only two "official releases" of the operating system fully customized for the BBB board: Angstrom and Debian. From reading the forums, Debian provides more support for audio/multimedia applications than Angstrom. At least it seems Debian is easier to configure. There are also plans to have Debian pre-installed on the boards [link]
As of March 5, 2014, BeagleBoard.org is providing customized Debian images on the Latest Images Page and making plans to include those images on production BeagleBone Black boards on the on-board eMMC.
My project was so slow to develop as I had to research every little change I needed for angstrom and then node was too beta to use. I found debian7 on elinux and gave it shot (running from SD). and I gotta say that this has revived my interest in the BBB and now able to spend time on my project and not tuning the OS.
I love that its light weight (no GUI) and fits onto plentiful 2gb cards, the install is vanilla which allows me to install what I need easily with out services clashing. Once I found out about optargs in uenv.txt I was flying. With killer documentation, setup scripts and adafruits python mod installed out of the box – this will just the best!
SD or eMMC?
BBB allows booting either from the internal eMMC (the on-board NAND storage) or from the MicroSD card. The default mode is to boot from the eMMC storage. Pressing the boot-button during power-on allows booting from the MicroSD card. (See the "Booting" section below for more details).
The installation images are different for SD-boot and eMMC-boot. The images that are intended to be installed in the eMMC are called "eMMC-flasher" images. Included is a script that would copy/install the operating system onto the eMMC storage right after booting. Read more about this format here [link].
Booting from the internal eMMC, has the additional advantage that the SD card can then be used to store music tracks.
INSTALLING DEBIAN ON THE eMMC
- Download the eMMC flasher version: BBB-eMMC-flasher-debian-7.4-2014-03-04-2gb.img [link]. The official Debian image was made available just a few days ago.
- Extract the downloaded .XZ file (BBB-eMMC-flasher-debian-7.4-2014-03-04-2gb.img.xz) with 7-Zip
- Copy the file to a MicroSD with Win32 DiskImager (This takes about 3 minutes with a Class 10 card). Copying to a regular SD card can take 2-3X the time.
- Insert the MicroSD card and boot by pressing the boot button while applying power. The copy/installation of the OS will commence. The 4 USR LEDs will start flashing
The following image shows the Win32Disk Imager application copying .img file to the MicroSD Card (step 3 above)
The 4 USR LEDs flashing while the OS is installed in the eMMC storage (step 4 above)
When the installation is complete, the 4 USR LEDs will be lit solid. This installation process took about 13.5 minutes with a Class 10 MicroSD card.
After removing the uSD card, BBB will boot off the eMMC when you power cycle the board.
Earlier I thought that with the OS installed in the eMMC storage, every time you power the board, it will boot from the eMMC regardless of whether you have a uSD card in the card slot or not. This is not the case. BBB will boot off the eMMC only if the inserted uSD card is NOT a bootable card. Both the regular image and the eMMC flasher image are bootable images.
If you leave the uSD card (with the eMMC flasher image) inserted and power on the board, the board will boot off the uSD and will start flashing the eMMC (again). Then you will have to wait until the end of the flashing process. Stopping the flashing process in the middle will obviously corrupt the installation.
The requirement to press the boot button when booting from the uSD card (as indicated in the documentation) may only be required when you first power the board as shipped from the factory.
Check the installation by removing the MicroSD card (so it will boot from the eMMC) and connecting the board to a computer with the provided USB cable. The Debian Installation behaves the same as the original Angstrom installation: Upon boot, the board will show up as a storage device:
This is a very good way to check if the installation was successful. The board must quickly show up as storage when connected to a computer through the USB cable. As it turned out in my case, the majority of the installations are successful but not 100%.
The static IP address remains the same: 192.168.7.2. It is a static address specified in /etc/networks/interfaces
This address is only accessible by the computer to which BBB is connected through the USB cable (and the USB-Network drivers are installed). It is not visible anywhere else because it is configured to connect through "usb 0″ as shown above.
Doing a free space inventory on the file system (typing "df" in the command line) we find that the s/w occupies 79% of the available space. The s/w takes up 1.27 GB
There is a slimmer version of Debian for BBB here [link].
- The slim version is dated 02/16/14 and kernel version v3.8.13-bone40.
- The official image found here [link] is dated 03/04/14 and kernel version 3.8.13-bone41
(Type "uname -r" to get the kernel version).
After flashing this version in the eMMC, we find the following:
Notice that the s/w occupies 24% in comparison. The s/w occupies 389 KB. I am not sure what is the difference between this version and the "official" version (aside from having more features). However, it is probably better to use the later versions as these releases are still beta releases and bugs are continuously being fixed. Also, I couldn't get the network (ethernet) to work in this version.
According to this discussion [link] the eMMC is almost full due to everyone's out-of-the-box requirements. Things that can be deleted are:
opencv/python/chromium (computer vision s/w) (63MB)
apt-get remove libopencv-* --purge ; apt-get autoremove rm -rf /usr/lib/chromium/ rm -f /usr/bin/chromium
lxde/xorg package (x11 graphical UI) (222MB) -Note: removing this broke "usbmount" which I was using to automount uSD cards…
apt-get remove -y x11-common ; apt-get autoremove
documentation (59MB)
rm /usr/share/doc -r
Further packages can be removed according to this guide [link]
After removing the above listed packages:
Experiment by removing other packages. To list the installed packages in order of size, use the following command [link]:
dpkg-query -Wf '${Installed-Size}\t${Package}\n' | sort -n
Compared the package list of the official debian (bone41) vs the slim version (bone40) (both as installed in the eMMC).
Listed here are the largest-size packages. -I think these are candidates for removal.
Removed the above packages with the following commands:
apt-get remove python2,7-dev --purge ; apt-get autoremove apt-get remove vim-runtime --purge ; apt-get autoremove apt-get remove lib11-mesa-dri --purge ; apt-get autoremove apt-get remove libgtk2.0-common --purge ; apt-get autoremove apt-get remove libgtk-3-common --purge ; apt-get autoremove
These are the savings after each removal. In total, Free space in the eMMC was increased by 567MB.
Notice that after removing libopencv* free space got reduced. Apparently the first time you use apt-get, some files are created (e.g. to hold the package list, etc). In another occasion when installing a package under 1M, free space was reduced from the factory 344MB to 274MB, a net loss of 60MB. Removing libopencv* right after resulted in a net gain of 26 MB.
Note also that since I don't know much about Linux/Unix, I am not 100% sure these would not cause problems, but I checked the functionality of those packages and they seem to be safe for removal. So do at your own risk :-)
On a side note, configuring Linux/Unix as a beginner can kill a lot of time without accomplish much. In addition, although there is a lot of information in the internet, it is all over the place and covering lots and lots of different configurations. A desktop environment behaves different from an embedded environment. It is best to look for information that closely matches your environment (for example posts about Rasberry Pi will resemble the BBB environment, but posts about Debian running on a laptop may not apply). Further, there are different ways and applications to accomplish the same thing. Some work (for me) and some don't work.
I guess the wise thing is do is to take advantage of the work from the people at RuneAudio and Volumio. RuneAudio even says that the OS is built to include only the essential components which beats my approach of slimming down an installation.
In the meantime, it is still good to have some understanding on the internal behavior of the operating system. Enjoy hacking :-)
Update (3/21/14)
I've used the following sequence to remove packages and recorded how much free space is left. Using autoremove removes other packages that are part of the main installation, packages that are subsequently removed may result in very little space savings because the dependent packages may have already been removed with autoremove.
In addition:
- Removed the packages in the installation uSD so that every time I flash the image to the eMMC, the removed packages are not copied over.
- Modified /etc/network/interfaces and /etc/resolv.conf in the uSD and this is copied over during the flashing
- Installed cifs-utils in order to support mounting of share drive
- Modified /etc/fstab but a new one is generated during the flashing, so it is replaced by a new one. Editing the /etc/fstab is necessary after every flashing to the eMMC or create a newfile with the new fstab entries and append to fstab file with the command: cat etc/newfile>>/etc/fstab
Starting point -252MB Free
Remove X11 package (GUI)
apt-get remove -y x11-common ; apt-get autoremove -473MB Free
Remove opencv (computer vision s/w)
apt-get remove libopencv-* --purge ; apt-get autoremove -501MB Free rm -rf /usr/lib/chromium/ -596MB Free rm -f /usr/bin/chromium/ -596MB Free
Remove documentation
rm /usr/share/doc -r -655MB Free
Remove Desktop environment GNOME and GTK
apt-get remove libgtk-3-common --purge ; apt-get autoremove -751MB Free apt-get remove libgtk2.0-common --purge ; apt-get autoremove -772MB Free rm -r /usr/share/icons -818 MB Free apt-get remove gnome-* --purge ; apt-get autoremove -818MB Free apt-get remove desktop-base --purge ; apt-get autoremove -818MB Free
Remove vim (since we are using vi)
apt-get remove vim-runtime --purge ; apt-get autoremove -845MB Free
Remove compilers
apt-get remove cpp-4.6 --purge ; apt-get autoremove -884MB Free (This also removes g++, gcc and gcc-4.6 and others...) (python can also be removed since this assumes no s/w development in the BBB)
BEAGLEBONE BLACK for AUDIO
Update (4/1/14)
I purchased my BBB from MakerTronics. I received info that there is a new version, Rev C, with more memory [link] and $10 more.
I had ordered a BBB for no other reason that it's better looking than the Rpi :-). That was before all the discussions at diyaudio and efforts to build an external clock board. But as it turned out, the BBB has the edge for audio application. Here is why:
|Rasberry Pi
|BeagleBone Black
|Native I2S support
|Both platforms can support I2S output, but it needs to be supported in the s/w.
|I2S Sample Rate limitation
|Up to 192KHz (because the on-board clock is 19.2MHz)
|Only 48KHz family (because the on-board clock is 24.576MHz and integer clock dividers)
|BBB supports 48KHz, 96KHz, 192KHz and 384KHz. RPi supports 44.1KHz, 48KHz, 88.2KHz, 96KHz, 176.4KHz and 192KHz (in theory). RPi uses "fractional clock dividers" to generate the 44.1KHz sample rate family
|Support for USB DAC
|Yes (LAN9512 chip [link])
|Yes (Built-in in the main processor)
|USB in the RPi goes through a built-in HUB and it is shared with the LAN controller within the USB/LAN chip. USB in the BBB is natively supported by the main processor; LAN has a separate chip
|Support for external, low jitter clocks
|The master clock in BBB may be provided externally by disabling the on-board audio-freq clock.The Master clock in the RPi seems internally generated and there is no I/O pin to feed an external master clock
|Master clock output
|Yes (from on-board clock)
|The Master clock in BBB is provided by the on-board 24.576MHz and fixed at this frequency and can be directly accessed from the outside. The Master clock of RPi seems internally generated but un-accessible from the outside. Without Master Clock, you can only use DACs that can operate asynchronously without a Master Clock input such as the ESS DACs or DACs that can operate with the master clock = bit clock
|Built-in rechargeable battery operation
|Yes [link]
|Rechargeable Battery operation in BBB would disable the 5V supply to the USB. Thus for USB operation, where the USB adapter takes the power from USB, BBB must be powered with 5V DC
|Built-in Storage
|2 GB eMMC Flash
|BBB can boot from the internal storage freeing the SD card for music storage. RPi requires that the OS be stored in the SD card (although it may be possible to also store music in the SD card)
In addition, even though the Rasberry Pi has the most community development support, the BBB is a close second, so there is ample resources available. The s/w part is a big part of the solution.
CPU: AM335x 1GHz ARM® Cortex-A8
RAM Chip (512M DDR3)
Flash Storage Chip (2GB 2MMC)
Power Management Chip
The TPS65217 [link] is a single chip power management IC specifically designed to support the AM335x series of application processors in portable and 5-V, non-portable applications. It provides a linear battery charger for single-cell Li-ion and Li-Polymer batteries, dual-input power path, three step-down converters, four LDOs
Potential lower-noise mod?:
According to page 2, 30 of datasheet:
For low-noise applications the devices can be forced into fixed frequency PWM using the I2C interface.
The TPS65217 step down converters typically operate with 2.25-MHz fixed frequency pulse width modulation (PWM) at moderate to heavy load currents. At light load currents the converter automatically enters Power Save Mode and operates in PFM (Pulse Frequency Modulation).
This is a s/w mod. However I2C access to the chip seems not easy at this moment. According to this article [link]:
The TPS65217C PMIC is very programmable; it has dozens of configuration settings specifically for charging and it has safety timer capability. The PMIC is configured upon startup via I2C. There are three I2C busses on the BBB, and one is dedicated to on-board peripherals. Control of the PMIC is not normally possibly by the user; it requires driver code or possibly there is access by the device tree infrastructure. Checking the .dts file in /boot did not reveal how to control the battery charger functionality. There are two current Google Summer of Code (GSoC) projects that touch on PMIC:
1. IIO, ADC, PMIC, LCD debug/patchwork (summary page, blog page) – Zubair Lutfullah
2. MINIX I2C drivers (summary page, blog page) – Thomas Cort
Hopefully the guys working on the projects (Zubair and Thomas) can offer some advice on how to set the level to 4.2V. Zubair's project also includes how to use the in-built ADC inside the AM3359 to monitor voltages.
According to the datasheet, "light load current" seems to be at the 1 mA range. Perhaps during operation, the device may never enter the PFM mode and therefore this mod may not be needed at all.
USB Host connector
The current preferred mode for audio is to use a USB audio interface to the DAC because BBB cannot support 44.1KHz sample frequencies with the on-board clock. The interesting part is that the 5V power in the USB host is provided by "SYS_5V"
"SYS_5V" is essentially the 5V DC input to the board. The 5V line goes through a series of solid state switches for power up/down management. Therefore a clean 5V supply to the board will also provide a clean 5V to the USB audio interface. Further filtering is provided by the FB7 ferrite.
I2S Output
BBB audio is generated by the main processor, the AM335x 1GHz ARM® Cortex-A8. The Multichannel Audio Serial Port (McASP) subsystem is responsible for generating the audio using and external audio frequency oscillator. In this case it is a 24.576 MHz oscillator connected to the clock input pin of the processor's audio subsystem
According to the BBB System Reference Manual, page 75 [link]:
6.10.6 Audio Interface
There is an I2S audio interface between the processor and the TDA19988. Stereo audio can be transported over the HDMI interface to an audio equipped display. In order to create the required clock frequencies, and external 24.576MHz oscillator is used.
In order to create the correct clock frequencies, we had to add an external 24.576MHZ oscillator. Unfortunately this had to be input into the processor using the pin previously used for GPIO3_21. In order to keep GPIO3_21 functionality, we provided a way to disable the oscillator if the need was there to use the pin on the expansion header.
Therefore, since a bit-clock has to be generated from this external 24.576MHz clock, only the 48KHz family of sample rates can be supported. Notice that the most common high res sample frequencies are 96KHz and 192KHz and are fully supported by the board.
Notice that since the 24.576MHz clock is fed through an external interface, the audio subsystem is operating in SLAVE MODE. This is according to the datasheet [link]. This master clock is also available external through pin 25 of header P9.
The I2S Pins are as follows on the header P9 (clearly labeled on the board) [link]:
There is a good discussion on I2S audio output here [link]
I don't know about the "unfortunately" part above, but for audio, disabling this clock and having access to the clock line through GPIO3_21 allows the use of an external clock (so this turned out to be fortunate for audio applications).
The solution for bit-perfect audio for all sample rates is to provide the clocks externally through an expansion "cape". This cape would have two clocks: one to support the 44.1KHz family of frequencies and another to support the 48KHz family of sample frequencies. Two other I/O pins are used to select the appropriate clock frequency. In addition to an external clock board, s/w needs to be developed to enable this function. More discussion here: [link], [link].
This "external clock board" is currently being discussed here
It is important to reiterate that without this not-yet-available clock cape, the BBB would not be able to support the 44.1KHz family of sample rates through its I2S interface. In the meanwhile, while we await the development of the dual clock board, the USB interface would be the preferable method for audio output.
The first thing to do is to check the board and ensure it is working. Follow the Getting Started Guide [link]. Here is what you do:
- To get started all you need is to connect the BBB board to a computer with the included USB cable. This will power the board and provide an interface to the board
- The BBB comes already loaded with an operating system (currently Angstrom) in the on-board eMMC flash memory. Once you power it on, it will boot-up.
- After boot, you will see the BBB board as a storage drive in your computer. From power-on, this booting process takes about 24 seconds.
- Following the link the the "Getting Started Guide" install the device drivers that will enable "network-over-USB" access to your BBB board
- Type http://192.168.7.2 in your browser and you will see the following screen
BBB out of the box (shows up as a storage device)
BBB after installing network-over-USB drivers (address: http://192.168.7.2)
Terminal Session
You may want to access the BBB with a terminal session. Download "putty" [link] (for Windows) and run it. Enter BBB IP address (192.168.7.2), you will see a log-in prompt. Enter "root" for login and nothing for password.
The official getting started guide is here: [link]


text:
Potage aux carottes
Are you sure you want to delete this recipe?
This recipe was uploaded by Despina33
So few ingredients and easy to prepare. Amaze your taste buds!!
Get a big pot and melt butter and soften onion. Add all ingredients and bring to a boil. Lower the heat and leave to simmer for 20 minutes. Adjust your salt & pepper. Once soup has cooled down, put it in the blender and bring it creamy.
You can easily freeze this as well.
You can easily freeze this as well.

subset: commoncrawl


text:
If Hobby Lobby wins, there should be no doubt what the Christian right's next move will be. The next lawsuit will claim that religious conservatives have a special right to discriminate against gay people.
Want daily updates on important issues? Subscribe to
After Brown v. Board of Education, many segregationists cited their own faith as justification for official racism. Ross Barnett won Mississippi's governorship in a landslide in 1960 after claiming that "the good Lord was the original segregationist."
"We believe that people everywhere should be treated equally, with dignity and respect, and that they should have the opportunity to reach their fullest potential, no matter who they are or whom they love."


text:
Talk:HERE Maps API - Converting a map screen pixel to a geo coordinate
From Nokia Developer Wiki
Spacemunkay - Not using PixelProjection class?Example was helpful but looks like it uses pixelToGeo from the Display class, not the PixelProjection class. Could you give an example of using the PixelProjection class too? Thanks for your help so far.
spacemunkay 22:42, 18 August 2011 (EEST)
Jasfox - PixelProjection class has been deprecated
There is no PixelProjection example since the PixelProjection class has been deprecated and removed from the API since version 2.2.1 I assume the class was removed since the API currently only supports one projection (Normalized Mercator).Display.pixelToGeo() does the job anyway.
jasfox 18:32, 20 December 2012 (EET)


text:
Tagged: SCOTUS
Tea Party candidate gets Constitution wrong — what a surprise!
Calling a mass shooting an "unfortunate accident" — gets you NRA buck$ for sure
Iowa Senate candidate Joni Ernst may wish to brush up on her high school civics.
Ernst, a Republican, was caught espousing wishful thinking as policy in a September 2013 forum held by the Iowa Faith & Freedom Coalition, saying Congress should not pass laws "that the states would consider nullifying…"
Unfortunately for Ernst, Supreme Court case law has determined the Constitution actually forbids nullification, and interprets the Tenth Amendment as a basic statement, not a prohibition against the federal government from passing additional laws not already enumerated…
"Tentherism" was one of the primary justifications used by pro-slavery advocate John Calhoun in the years leading up to the Civil War, and a hundred years later, by segregationists opposing civil rights. More recently, conservatives have resurrected the theory to argue for nullification of federal gun laws, the Affordable Care Act and other federal regulations.
Take a look at the issues raised by these ignoranuses. Time after time they center on bigotry, a false libertarianism that turns its back on responsibility to your fellow citizens.
Atheist freed from Nigerian psychiatric hospital – because of doctor's strike!
A Nigerian man detained in a hospital psychiatric ward because he did not believe in God has been freed.
Mubarak Bala was released because of a doctors' strike which has seen many patients discharged, a charity said.
Mr Bala said he now wanted to reconcile with his family who committed him to the hospital in Kano where he says he was held against his will for 18 days.
But he said he wanted to leave the predominantly Muslim north of Nigeria after receiving death threats.
A humanist charity which took up his case said that Mr Bala, a chemical engineering graduate, was freed on Tuesday but news of his release was not made public until he was in a secure location.
"There are still deep concerns for Mubarak's safety in a part of the country where accusations of 'apostasy' can be deadly," the International Humanist and Ethical Union said…
In a statement released on Friday, Mr Bala said he was now staying with some of his family, had been assured of his safety and wanted to put things behind him "for the sake of reconciliation"…
He said he retracted "some derogatory remarks I have made online, out of anger".
His lawyer, Muhammad Bello Shehu, told the BBC Hausa Service this did not refer to his faith but to remarks he had made about his father who he accused of being an Islamic leader who could not afford to have a non-Muslim in the family.
After the 29-year-old was admitted to a psychiatric ward at the Aminu Kano Teaching Hospital, he sought help from friends via email and social media until his phone was confiscated, according to IHEU.
Mr Shehu said that no further legal action would be taken but that Mr Bala wanted another doctor to evaluate him to put it on the record that he was not suffering from a mental illness as the hospital has concluded.
Good thing we live in a modern country where there is separation of church and state.
SCOTUS rules coppers must get a warrant to search cellphones
In an emphatic defense of privacy in the digital age, a unanimous Supreme Court ruled Wednesday that police generally may not search the cellphones of people they arrest without first getting search warrants.
Cellphones are unlike anything else police may find on someone they arrest, Chief Justice John Roberts wrote for the court. They are "not just another technological convenience," he said, but ubiquitous, increasingly powerful computers that contain vast quantities of personal, sensitive information.
"With all they contain and all they may reveal, they hold for many Americans the privacies of life," Roberts declared. So the message to police about what they should do before rummaging through a cellphone's contents following an arrest is simple: "Get a warrant…"
The Obama administration and the state of California, defending cellphone searches, said the phones should have no greater protection from a search than anything else police find. But the defendants in the current cases, backed by civil libertarians, librarians and news media groups, argued that cellphones, especially smartphones, can store troves of sensitive personal information.
"By recognizing that the digital revolution has transformed our expectations of privacy, today's decision is itself revolutionary and will help to protect the privacy rights of all Americans," said American Civil Liberties Union legal director Steven Shapiro…
In the cases decided Wednesday, one defendant carried a smartphone, while the other carried an older flip phone. The police looked through both without first getting search warrants…
A ride on horseback and a flight to the moon both "are ways of getting from point A to point B, but little else justifies lumping them together," Roberts said…
The decision will protect cellphones from warrantless searches going forward, but it may not be of much help to defendants in pending cases, or those whose convictions are final, said lawyer Gerry Morris…He said that courts could allow evidence to be used from police searches of cellphones that were done in "good faith" and relied on the law as it stood when the searches were conducted.
Still a two-fold victory. We've acquired the sort of protection many folks – from geeks to civil libertarians – agree we need in a digital age. Now, the task remains to take the modernized version of privacy and stick in the eye of paranoids ranging from the White House and Congress to the NSA.
SCOTUS won't stop gay marriage in Oregon
The U.S. Supreme Court rejected a conservative group's move to halt same-sex marriages in Oregon in a brief order Wednesday.
The Oregon attorney general has refused to challenge a judge's ruling in May that found the state's ban on gay marriage unconstitutional. The National Organization for Marriage has been attempting to win standing to appeal.
In a filing Tuesday with Justice Anthony Kennedy, who handles emergency matters for Western states, NOM said that in Oregon a position decided by voters in a referendum was "invalidated at the behest and encouragement of its elected officials." Oregon held the vote in 2004 after Multnomah County, which includes the city of Portland, issued marriage licenses to same-sex couples.
Kennedy referred the matter to the entire court, which issued a one-sentence decision denying the group's request.
"The application for stay presented to Justice [Anthony] Kennedy and by him referred to the Court is denied…" In case you wondered what that sentence was.
19th Century legal minds encounter 21st Century tech inside SCOTUS
Scalia thinks HBO is broadcast free-to-air like a local TV channel
One U.S. Supreme Court justice referred to Netflix as "Netflick." Another seemed not to know that HBO is a cable channel. A third appeared to think most software coding could be tossed off in a mere weekend.
These and other apparent gaffes by the justices during oral arguments have became a source of bemused derision, as tech aficionados, legal experts and others have taken to social media, blogs, YouTube and other outlets to proclaim the justices black-robed techno-fogeys.
"Everyone who's anyone inside that courtroom is most likely an incompetent Luddite," Sarah Jeong, a 25-year-old Harvard Law School student, wrote on her personal blog following a recent Supreme Court argument dealing with a copyright dispute over TV online startup Aereo.
When it comes to cutting-edge technology, Jeong told Reuters: "Mom and Dad are the Supreme Court."
Parker Higgins, a 26-year-old digital rights advocate who works at the Electronic Frontier Foundation, spliced together audio of the Aereo argument for comic effect and posted it on a sound cloud and at YouTube.
About a minute long, it's a compilation of the justices' references to "the cloud," highlighting some misuse of terminology and uncertainty about how the technology works.
"Sometimes it's just amusing and sometimes it's really troubling," Higgins said…
The court, via spokeswoman Kathy Arberg, declined comment on the recent criticism…
RTFA for the anachronistic examples, funny enough, scary enough on their own. Reuters rolls on into a tag predictably riddled with sophistry. Assuring everyone that final decisions will be tidy.
I wish I was confident that tidy equates to useful.
SCOTUS hearing arguments in mobile phone search case
Analysts say the court's ruling will have a very broad impact on US criminal justice, because as many as 12 million people are arrested every year and many of them carry mobile phones
The US Supreme Court is hearing arguments over whether police may search a suspect's mobile phone without a warrant during an arrest.
The high court is weighing appeals by two people convicted based on evidence found on their phones.
The defendants argue their constitutional protections against unreasonable searches were violated.
But the government argues phones are no more shielded from searches than other articles police find during an arrest.
The Supreme Court has previously ruled that during an arrest, police do not need a warrant to empty a suspect's pockets and examine whatever they find in order to ensure officers' safety and prevent the destruction of evidence…
Under the fourth amendment to the US constitution, police and other government officials generally need to obtain a warrant from a judge before they can conduct a search. A warrant requires evidence that a crime has been committed by the suspect.
Lawyers for David Riley and Brima Wurie argue that allowing police to search mobile phones during the initial arrest would radically broaden police powers, because many arrests occur for minor violations and never end in conviction.
They say a phone's contents cannot be used as a weapon and that police could seize the phone without searching it to avoid the destruction of evidence.
The defendants are also backed by privacy advocates who say mobile phones, especially smartphones, contain enormous quantities of sensitive personal information that have no bearing on the arrest.
The worst possible argument – IMHO – is the concept advanced by the state of California and the department of Justice. They say a person who is arrested has a lower expectation of privacy. Therefore, it's OK to actively diminish any rights to privacy we're supposed to expect under our Constitution.
Sophistry 101, folks.
Citizenship denied legal immigrant because she is an atheist
Idiots abound
A legal immigrant living in California was denied U.S. citizenship after she identified herself as a "conscientious objector" who will not bear arms for the United States because of her religious beliefs, or lack thereof, in her application.
The application was rejected by United States Citizenship and Immigration Services on the grounds that Adriana Ramiez's unwillingness to bear arms "is not based on religious training or belief…"
The American Humanist Association has taken up Ramirez's cause and will represent her in the appeal…
The AHA is seeking that the decision immediately be reversed.
"There is no legal basis to deny a citizenship application because one's ethical values are secular," said AHA attorney Monica Miller. "The letter is meant to clarify the mistake being made by officials at the U.S. Citizenship and Immigration Services's San Diego office so that the application process can move forward."
The ignoranuses in Immigration are like a lot of bureaucrats who never thought of looking outside the cubicle of their tiny little minds to see if this has already been sorted out by another government agency.
Bill Morico sued United States Selective Service during the VietNam War and won status as a non-religious conscientious objector in a case that went all the way to the Supreme Court – setting the operative precedent.
A helluva union organizer for Hospital Workers Local 1199 – I might add.
Supreme Court Justice' online game teaches students about civics
Researchers at Baylor University studied the effectiveness of iCivics, a free online website founded by retired Supreme Court Justice Sandra Day O'Connor that teaches civics concepts using 19 educational games…
The study shows iCivics is an effective tool for teaching civics concepts to primary and middle school students, they wrote in The Journal of Social Studies Research.
More than 250 students in two school districts in Waco, Texas, played iCivics games for six weeks, twice a week for 30 minutes.
The students were tested before and after the study period, and completed journal entries on their experience.
Students' scores on a test of civic knowledge significantly improved after playing iCivics for the sample as a whole," Baylor curriculum and instruction Professor Karon LeCompte said.
While most of the students in the tested grade levels showed improvement in their civics education, younger students exhibited the biggest gains, the researchers said.
"Students in grades 5 and 8 showed improvement in test scores with eight-grade students scoring nearly five points higher on both," co-researcher Brooke Blevins said. "Students in fourth grade showed a marked improvement of nearly 10 points, the highest out of all of the grades…"
"Teachers indicated that their students loved the games and learned without even realizing they were learning complex civics concepts," Blevins said.
I'm not surprised in the least that young people appreciate participation and responsibility in government, building a society. That is still at the core of this noble experiment called the United States of America. Regardless of the lies perpetuated by Confederates and cowardly make-believe conservatives.
Rock on Judge O'Connor! Any chance you'll come out with a special version 2.0 for meatheads like Justices Thomas and Scalia?
SCOTUS won't review Arizona's unconstitutional abortion law – DOA
The Supreme Court declined Monday to revive an Arizona law that prohibited most abortions after a pregnancy had reached 20 weeks.
The court, as is its custom, gave no reason for declining to review a decision by the U.S. Court of Appeals for the 9th Circuit that the law was unconstitutional because it violated standards established by the justices 40 years ago in Roe v. Wade.
About a dozen other states have passed laws similar to Arizona's, hoping they would provide a way to challenge the court's ruling that abortion must be generally available to women before a fetus reaches viability, which is generally considered to be around 24 weeks. Pregnancies last about 40 weeks.
It is the third time this term that the court has decided not to review a lower court decision that struck down a restrictive state abortion law. The other two came from Oklahoma, where new rules would have practically eliminated drug-induced abortions and required what opponents said would be unnecessary ultrasound tests…
About the only critter dumber than a fundamentalist politician committed to the War on Women – is the equally committed voter who doesn't mind wasting taxpayer dollars on defending patently unconstitutional laws restricting women's reproductive rights. Guess they'd rather spend money on 18th Century bible beliefs instead of education for their kids.
Come to think of it – the last thing they want is educated children.
"The Supreme Court soundly declined to review the Ninth Circuit's sound decision that Arizona's abortion ban is clearly unconstitutional under long-standing precedent," Nancy Northup, president of the Center for Reproductive Rights, said in a statement. ". . . But women should not be forced to run to court, year after year, in state after state, to protect their constitutional rights and access to critical health care…"
Not all of the state laws imposing the 20-week limit have been challenged, because the procedure is so uncommon, she said. But laws in Georgia and Idaho have been blocked.
Judge rules New Jersey must allow same-sex marriage
A New Jersey judge ruled on Friday that the state must allow same-sex couples to marry, finding that failing to do so deprives them of rights that are now guaranteed by the federal government following a ruling by the Supreme Court in June.
It is the first time a court has struck down a state ban on same-sex marriage as a direct result of the Supreme Court's ruling, and it comes as Gov. Chris Christie continues to oppose allowing gay marriage in the state. His administration may appeal.
"The ineligibility of same-sex couples for federal benefits is currently harming same-sex couples in New Jersey in a wide range of contexts," wrote the judge, Mary C. Jacobson of State Superior Court in Mercer County. "Same-sex couples must be allowed to marry in order to obtain equal protection of the law under the New Jersey Constitution."
For instance, Judge Jacobson wrote, civil union partners who are federal employees living in the state are not eligible for benefits stipulated in the federal pension system.
Couples in civil unions also may not enjoy the same federal tax benefits as married couples or the protections of the Family Medical Leave Act, she wrote…


text:
Latest News
Kim's Got Designs On Your Kids! Kardashian Wants To Launch A Bab...
Inspired by her own pregnancy, Kim Kardashian is looking into designing a collection of baby clothes as part of the Kardashian Kollection label, RadarOnl… READ MORE
Nine-Year-Old Girl Reportedly Gives Birth In Mexico
A nine-year-old girl identified only as "Dafne," has reportedly given birth in the Mexican state of Jalisco, RadarOnline.com is reporting… READ MORE
Are You Ready For Another Giudice? Teresa Caving To Joe's Demand...
Real Housewives of New Jersey's most outspoken, fiery and controversial star, Teresa Giudice isn't always the one calling the shots, despi… READ MORE
Stress, What Stress? Kim Kardashian All Smiles Amid Claims Divorce Dra...
Kim Kardashian is going to great lengths to show off her growing bun in the oven, but her a la mode attempts are backfiring!
The 32-year-old reality star, who … READ MORE
Kris Humphries: It's Not My Fault Our Divorce Is Stressing Out KimR...
Kris Humphries is telling his close friends that it's not his fault that his dragged-out divorce with Kim Kardashian is causing stress to her pregna… READ MORE
Courtland Rogers Seen Snorting Heroin, Says Jenelle Evans Was Doing Dr...
Courtland Rogers opened up about his estranged wife Jenelle Evans' drug use during her recent pregnancy, all while sorting a white powder that a sou… READ MORE
Bardem Bebe On Board! Penelope Cruz & Hubby Javier Are Expecting A...
Penelope Cruz's family (and tummy!) is expanding!
The stunning Volver star, 38, and her husband, 43-year-old Oscar-winner Javier Bardem are exp… READ MORE
Well Hello There! Kim Kardashian Flaunts Burgeoning Baby Bump In Tight...
Kim Kardashian is proud of her baby bump!
The 32-year-old reality star, who is due with her and Kanye West's first child in July and has recently started to sh… READ MORE
Beyonce Reveals Heartbreaking Miscarriage, Was 'Saddest' Thing In Her ...
Beyonce is opening up about her heartbreaking miscarriage in a new documentary and says it was the "saddest" thing she has ever happened to her.
Now a mother … READ MORE
Baby Bump Alert! Kim Kardashian Shows Off Burgeoning Belly At The Gym
Kim Kardashian definitely has a bun in the oven, and it's growing by the day!
The 32-year-old reality star, who is pregnant with her first child by boy… READ MORE
The Drama Never Ends! Jenelle Evans Bans Hubby From Visiting Her In Ho...
Jenelle Evans suffered a heartbreaking miscarriage on Friday morning without the babydaddy, Courtland Rogers, by her side — and now he's speakin… READ MORE
Jenelle Evans Suffers Tragic Miscarriage
Just eight weeks into her pregnancy Jenelle Evans tragically had a miscarriage, RadarOnline.com has exclusively learned.
The troubled Teen Mom star Twe… READ MORE
Jenelle Evans Files Assault Charges Against Her Husband!
Jenelle Evans is not taking any more abuse from her husband of six weeks, Courtland Rogers and to prove it the troubled 21-year-old has filed five assault ch… READ MORE
Jenelle Evans Explodes At Cheating Hubby! She Won't Take Him Bac...
Jenelle Evans has had enough! The Teen Mom star has exploded on her husband, and RadarOnline.com has exclusively learned that she hasn't forgiven her him f… READ MORE
Kim Kardashian Was Worried She Couldn't Get Pregnant: 'May...
On night two of the Kourtney & Kim Take Miami premiere, Kim Kardashian revealed some unsettling news from her doctor about her chances of conceiving, a… READ MORE
Bad Baby Daddy! Pregnant Jenelle Evans Slams Husband For Cheating!
Fighting already? Jenelle Evans is slamming her husband Courtland Rogers and accusing him of cheating just days after revealing to RadarOnline.com that … READ MORE
'Nosy' Kim Kardashian Admits To Causing 'Drama' And Making People Cry...
Kim Kardashian is "nosy," gets into "everyone's business" and can instigate "physical fights" and drama – the reality TV queen admits.
Stunningly the 32-… READ MORE
Kim Kardashian Wants To Give Kris Humphries Annulment, But Momager Kri...
Kim Kardashian is willing to give her estranged husband, NBA star Kris Humphries, an annulment on the grounds that the marriage is fraudulent, but her moma… READ MORE
Oh Baby! Jenelle Evans Shows Off Her Pregnancy Bump
She may only be about seven weeks pregnant, but Jenelle Evans is already starting to show and RadarOnline.com has the photos of her with her baby bump!
'Teen Mom' Jenelle Evans Is Six Weeks Pregnant: See Her Sonogram!
Jenelle Evans is expecting her second baby and her husband, Courtland Rogers, shared her sonogram pictures exclusively with RadarOnline.com, saying th… READ MORE


text:
Momentum Choir Year-End Gala
Momentum Choir Year-End Gala
Start Time: Wednesday, May 23, 2012 - 7:00 pm
End Time: Wednesday, May 23, 2012 - 9:00 pm
Momentum Choir year-end gala "See Me As Me" concert.
Experience one of Canada's most vibrant and inspiring choirs, 50 members, all with a passion and talent for music, all with a developmental disability, performing their new theme song "See Me As Me." To hear them sing is a profound emotional experience.
Wednesday, May 23, 7 p.m. to 9 p.m.at Bethany Community Church, 1388 Third St., St. Catharines.
$10 per person, $25 per family or group home. Tickets available at the door.
For more information: email@example.com or firstname.lastname@example.com.
Visit us on Momentum Choir Facebook or www.momentumchoir.ca.
Venue Information:
Bethany Community Church, 1388 Third Street Louth, St. Catharines, ON
Email: email@example.com
Web: http://www.momentumchoir.ca
View More Niagara Events
Get forecast by town or city
Possible matches are listed below. Please select a location from the list below or enter a new location in the text box above.


text:
Two weeks after the Christmas shopping season ended, small business
owners have now had the chance to tally up the results. Was the season a
financial success, or more Grinch like?
At Shelton Jewelers, there were high hopes for a sparkling shopping season. While it was decent, it could have been better. Higher priced items stayed on the shelves.
"It was pretty steady," Store Manager Jessica Treigle said of business. "We were really busy leading up into the month, but we really expected us to be a little bit busier with higher ticket sales at Christmas time. We really didn't see that."
It was much the same story at Chandeleur Outfitters. Business was up a bit, but one thing held customers back.
"Many, many people were not spending as much and they were worried about the economy, thinking about saving their money, putting it towards not just expensive gifts," Owner Carla Recio said.
While most of the small business owners that I talked to are reporting flat sales when comparing this year to last during the holiday, others reported significant gains. And they attribute those gains to some basic business beliefs.
Katie Hinkel owns Lee Tracy, where business was up a whopping 19 percent this year.
"We really get to know our customers and know what they are looking for, so we have a really good merchandise mix and we bring all of that together along with a lot of marketing on Facebook to bring people in," Hinkel explained.
At Poppy's on Porter, it was also a jolly holiday season, according to Owner Gayle Jones.
"It was actually much better than I expected. We had a wonderful Christmas season," Jones recalled. "My customers came out and supported us. We were up well for Christmas and therefore we ended up having our best year ever since I bought Poppy's four years ago."
Store owners also say shop at home campaigns in coast cities also helped the Christmas time bottom line.
Nationwide, retail sales grew a scant seven tenths of one percent over the same period last year. Most economists had predicted an increase of three to four percent.
Copyright 2013 WLOX. All rights reserved.
208 DeBuys Road
Biloxi, MS 39531
(228) 896-1313
FCC Public File
EEO Report
Closed Captioning


text:
Our fiscal sponsor is The Ocean Foundation, a 501(c)(3) nonprofit organization based in Washington, DC. Your donation to us through The Ocean Foundation is fully tax-deductible in the United States. Use the orange "Donate" button below to make an online donation to the Ocean Doctor Fund at The Ocean Foundation.
You may also mail a check to The Ocean Foundation:
- Make your check payable to "The Ocean Foundation"
- Write "Friends of Ocean Doctor Fund" on the memo line of your check
- Mail your check to: The Ocean Foundation • 1990 M Street, NW • Suite 250 • Washington, DC 20036


text:
Join Now
Join ePHOTOzine, the friendliest photography community.
Upload photos, chat with photographers, win prizes and much more for free!
- «
- ‹
- 1
- ›
- »
I am interested in buying a cheap, decent macro lens. I already own a Tamron 70-300mm Tele-Macro lens but am looking to move to dedicated macro.
There really is no such thing as a cheap, decent macro lens. Probably the best value for money is the Sigma 105mm which gets good write-ups but they are still quite pricey.
The least expensive route to true macro without any compromising of quality is a set of extension tubes. Ideally use them with a prime lens such as a 50mm f/1.8 but they can be used satisfactorily with a mid-range kit zoom.
The Tamron 90mm macro is a reasonable price and I'm very happy with the results I get on a Canon 5D MKII
I agree with the above.
About the cheapest decent "true" macro, I'm aware of is the Sigma 50mm f2.8 DG, which you can get for about £200 - £250 (e-Bay, amongst others) , some find the relativley short focal length a bit restrictive. However I have owned one of these lenses and found image quality to be up close to the big money macro's. But obviously not as cheap as a set of tubes?
The cheapest recommended macro lens is the Tamron 90mm macro if you intend to work with insects. You can work with shorter focal lengths and many do, however its a harder skill to learn to master.
If you want to go cheaper still however you can consider a set of Kenko AF Extension tubes. These are about the best price for what you get because you get a good build quality and the electrical contacts which you need to retain control over your lens (without them you've no aperture control at all). From there you can use them on your kit lens that came with your camera to get to true macro (1:1 magnification). You'll have a small distance from the front of the lens to the subject (working distance) but it can be done.
Avoid the ultra cheap extension tubes because they lack the metal contacts which allow AF control (as mentioned above).
The only other thing you could consider is a Raynox DCR 250 (cheaper than the tubes) and use that on your 70-300mm lens to increase its maximum magnification. I've no idea of the figures of what magnification this combo will give you and you might also need to get a stepping ring to allow the raynox to fit your lens.
- «
- ‹
- 1
- ›
- »
Add a Comment
ePHOTOzine, the web's friendliest photography community.
Upload photos, chat with photographers, win prizes and much more.


text:
I lived with two really nice young women for a little bit at the start of this year, and became quite close to them.
This was shortly before I was diagnosed.
I remember when I was there, I used to sit outside of one of their room's and listen to her play music. It was so lovely to be able to do that; and it calmed me down a lot.
I recently found out that she wrote a song for me when she found out that I had a Chronic Illness.
I've decided to share it with you, in the hope that it can bring you some comfort.
This is her myspace: http://uk.myspace.com/emmarushton08 (The song is 'rize')
- mmspectreon likes this
- itrhymeswithalayne reblogged this from invisiblyill and added:
jesus fuck how did I forget about this. Makes me feel very loved
- if-we-all-fall likes this
- invisiblyill posted this


text:
Blue Book® Suggested Retail Value
Fuel Economy (city/hwy)
Note: The 2013 Honda CR-V LX 2WD pictured below is representative of the 2013 Honda CR-V EX-L 2WD.
Video Reviews
There are no 2013 Honda CR-V video reviews. However, the following might be helpful:
2012 Honda CR-V
"The 2012 Honda CR-V presents compact functionality, all-weather capability and state-of-the-art…
Recently Viewed Cars
Related Articles


text:
Get the latest news from the Foxes delivered for FREE to your inbox.
Alie Sesay
23 Sep 2014
Nugent Hails Fighting...
Last season's top scorer David Nugent has praised Leicester City's resilient performance at King Power Stadium on Sunday to beat Barclays Premier League heavyweights Manchester United.
22 Sep 2014
My Top Five LCFC...
In the wake of one of the greatest Leicester City performances in recent memory at King Power Stadium on Sunday, LCFC.com asked Club Historian John Hutchinson to choose his top-five.
22 Sep 2014
Tickets: £10 Discount For...
Leicester City is delighted to confirm a £10 discount for supporters purchasing tickets for the trip to Swansea City's Liberty Stadium on 25 October (5.30pm KO).
22 Sep 2014
Vardy: We Can Create...
Leicester City striker Jamie Vardy has praised the team's belief after they put Manchester United to the sword in emphatic fashion at King Power Stadium on Sunday.
22 Sep 2014
Storify: Leicester City 5...
Re-live Leicester City's incredible 5-3 Barclays Premier League victory over Manchester United through social media.
21 Sep 2014
AS IT HAPPENED: Leicester...
All the action as Leicester City took on Manchester United in the Barclays Premier League at King Power Stadium.
Get our newsletter