Raspberry PI3, 503HTA Tube DAC and USB Microphone.

 Music, Projects, Raspberry PI  Comments Off on Raspberry PI3, 503HTA Tube DAC and USB Microphone.
Oct 222016
 

I have a Raspberry Pi 3 with a 503HTA Hybrid Tube Amp and a USB Microphone attached. I am running a HiFiBerry preconfigured SD Card image.

My intent is to run a MPD server accessible via tablet app; in this case MPD Control for Android. And also the Amazon Alexa sample application.

The only way I could get this to work was thru PulseAudio. Prior to doing any of this, make sure everything is up-to-date.

sudo apt-get update
sudo apt-get dist-upgrade
sudo rpi-update
sudo reboot

I have Raspbian Jessie configured for the Tube Amp with the following modifications:
1. In /boot/config.txt; comment out dtparam=audio=on. This disables the onboard audio. I added the following –

#dtparam=audio=on
dtoverlay=pi3-disable-bt
dtoverlay=hifiberry-dac

dtoverlay=pi3-disable-bt disables the onboard bluetooth which I believe is necessary for HiFiBerry DACs.

2. In /etc/modules; I have the following lines –

i2c-dev
#snd_bcm2835
snd_usb_audio
#DAC Modules
snd_soc_bcm2708
bcm2708_dmaengine
snd_soc_pcm5102a
snd_soc_hifiberry_dac

3. In /home/pi/.asoundrc; I have the following –

pcm.usb
{
    type hw
    card Device
}
pcm.external
{
    type hw
    card sndrpihifiberry
}
pcm.!default
{
    type hw
    playback.pcm
    {
        type hw
        slave.pcm "external"
    }
    capture.pcm
    {
        type plug
        slave.pcm "usb"
    }
}
ctl.!default
{
    type hw
    playback.pcm
    {
        type hw
        slave.pcm "sndrpihifiberry"
    }
    capture.pcm
    {
        type plug
        slave.pcm "usb"
    }
}
# The following lines are constantly added at boot. I have no idea which process does
# this, but it overrides the configuration above.
pcm.!default {
	type hw
	card 1
}

ctl.!default {
	type hw
	card 1
}

I don’t believe this step is needed when using PulseAudio, however, this .asoundrc config works if you are using a USB microphone and onboard audio out. You can determine the name of your DAC with ‘aplay -l’ from the command line. Replace sndrpihifiberry with ‘ALSA’

4. Installing PulseAudio – My steps:

sudo apt-get install vlc
sudo apt-get install pulseaudio
sudo apt-get install pavucontrol

5. Installing MPD

sudo apt-get install mpd

Modify the /etc/mpd.conf with:

audio_output {
#       type            "alsa"
        type            "pulse"
        name            "MPD PulseAudio Output"
        server          "127.0.0.1"
}

You will probably also need to edit this file with your custom options.

6. Modify /etc/pulse/client.conf; uncomment autospawn=yes. Delete the ‘;’ before that line.

7. Modify /etc/pulse/default.pa

### Network access (may be configured with paprefs, so leave this commented
### here if you plan to use paprefs)
#load-module module-esound-protocol-tcp
load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1
#load-module module-zeroconf-publish

Uncomment the native-protocol entry and add ‘auth-ip-acl=127.0.0.1’ at the end
Some instructions say to uncomment the zeroconf line, but I left it as-is.

8. Depending on which user runs MPD. These commands lets specific users to the PulseAudio groups.

sudo usermod -a -G pulse-access mpd
sudo usermod -a -G pulse mpd
sudo usermod -a -G pulse-access pi
sudo usermod -a -G pulse pi

9. Boot into your Raspbian Desktop GUI. Open a terminal and start PulseAudio.

pulseaudio -D

10. You should now be able to launch the PulseAudio Volume Control.
pac

You should see your DAC as an Output Device and your USB Microphone as an Input Device.

11. Start your Alexa services per the instructions on their GitHub.
Note: The original errors I was getting from the ‘wakeWordAgent -e sensory’ were:

wakeWordAgent: pcm.c:694: snd_pcm_close: assertion 'pcm' failed"
or
wakeWordAgent: pcm.c:1046: snd_pcm_prepare: Assertion `pcm' failed.

12. Verify your MPD app.

In my experience, you must always start PulseAudio first from a terminal before Alexa or the MPD server will function properly. With these instructions, I was able to have output from MPD and also have Alexa listen and respond.

InfoPath – Delete Item via UpdateListItems Web Service

 Sharepoint  Comments Off on InfoPath – Delete Item via UpdateListItems Web Service
Mar 042016
 

I have been having problems sending a delete request via the lists.asmx web service in SharePoint.
My Delete XML packet looks like this:

<Batch OnError="Continue" PreCalc="TRUE" ListVersion="0">
<Method ID="1" Cmd="Delete">
<Field Name="ID"></Field>
</Method>
</Batch>

Using the steps found here (http://jaliyaudagedara.blogspot.com/2011/03/submitting-data-to-sharepoint-2010-list.html) I setup a Delete List Item data connection.

When trying to delete an item from a list (not document library) I was seeing the following error in the
ULS logs:

The form definition (.xsf) file has an invalid mapping from the document to the submit web service

After a little digging it appears the web service call wants the list item ID to be an integer.
After exporting my template files, I edited the schema definition file (.XSD) for the Delete function.
At the bottom of this file you will find:

	<xsd:attribute name="PreCalc" type="xsd:string"></xsd:attribute>
	<xsd:attribute name="Cmd" type="xsd:string"></xsd:attribute>
	<xsd:attribute name="ListVersion" type="xsd:string"></xsd:attribute>
	<xsd:attribute name="OnError" type="xsd:string"></xsd:attribute>
	<xsd:attribute name="ID" type="xsd:string"></xsd:attribute>
	<xsd:attribute name="Name" type="xsd:string"></xsd:attribute>

Simply change:

	<xsd:attribute name="ID" type="xsd:string"></xsd:attribute>

to

	<xsd:attribute name="ID" type="xsd:integer"></xsd:attribute>

and my delete function works!