<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>

<channel>
	<title>Lior Gradstein's Blog &#187; hardware</title>
	<atom:link href="http://www.gradstein.info/category/hardware/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.gradstein.info</link>
	<description></description>
	<pubDate>Mon, 29 Sep 2008 12:39:32 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6</generator>
	<language>en</language>
			<item>
		<title>How to automatically run a script after inserting a USB device on Ubuntu?</title>
		<link>http://www.gradstein.info/hardware/how-to-automatically-run-a-script-after-inserting-a-usb-device-on-ubuntu/</link>
		<comments>http://www.gradstein.info/hardware/how-to-automatically-run-a-script-after-inserting-a-usb-device-on-ubuntu/#comments</comments>
		<pubDate>Sun, 13 Apr 2008 21:32:01 +0000</pubDate>
		<dc:creator>Lior Gradstein</dc:creator>
		
		<category><![CDATA[hardware]]></category>

		<category><![CDATA[software]]></category>

		<category><![CDATA[automatic]]></category>

		<category><![CDATA[download]]></category>

		<category><![CDATA[hotplug]]></category>

		<category><![CDATA[linux]]></category>

		<category><![CDATA[mount]]></category>

		<category><![CDATA[photos]]></category>

		<category><![CDATA[program]]></category>

		<category><![CDATA[run]]></category>

		<category><![CDATA[script]]></category>

		<category><![CDATA[ubuntu]]></category>

		<category><![CDATA[udev]]></category>

		<category><![CDATA[usb]]></category>

	<!-- AutoMeta Start -->
	<category></category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://www.gradstein.info/?p=35</guid>
		<description><![CDATA[Here&#8217;s the setup: you have a computer which has a SD port (small memory cards, mostly used in cameras, phones, etc.). You want to get all of your photos from that card automatically as soon as you insert your card (may be a USB key as well), that is, run a script which will search [...]]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s the setup: you have a computer which has a SD port (small memory cards, mostly used in cameras, phones, etc.). You want to get all of your photos from that card automatically as soon as you insert your card (may be a USB key as well), that is, run a script which will search for all of your photos, and copy them to a local directory.</p>
<p><span id="more-35"></span></p>
<p>I know, some programs already do this, but they require Xwindow and some <a href="http://f-spot.org/Main_Page" class="liexternal">ugly Gnome</a>/KDE app. What we&#8217;re doing here is a minimal setup, using the least memory.</p>
<p>Normally, on a normal Unix system you would use the included device detection mechanism, which is <a href="http://linux-hotplug.sourceforge.net/" title="Linux Hotplug project" class="liexternal">hotplug</a>. But on Ubuntu (at least <em>Gutsy</em> and <em>Hardy</em>), the de-facto/required way is by using <strong>udev</strong>, which is an event based system, using rules to fire new events/mount/symlink or run programs according to some patterns defined as &#8220;rules&#8221;.</p>
<p>So, the first thing to do is to identify your device according to USB events. udevinfo is your friend. So, after looking at the output of dmesg, you&#8217;ll see your USB device is available on some sd* device.</p>
<p>So run:</p>
<div class="python" style="font-family: monospace;color: #000066; border: 1px solid orange; margin: 5px; padding: 5px; background-color: #ffffff;"> udevinfo -a -p &nbsp;/<span style="color: #dc143c;">sys</span>/block/sda<br />
<span style="color: black;">&#40;</span>replace sda with you device<span style="color: black;">&#41;</span></div>
<p>You will get a list of &#8220;blocks&#8221; representing each layer of drivers. For example:</p>
<div class="python" style="font-family: monospace;color: #000066; border: 1px solid orange; margin: 5px; padding: 5px; background-color: #ffffff;">root@sleek:/etc/udev/rules.<span style="color: black;">d</span><span style="color: #808080; font-style: italic;"># udevinfo -a -p /sys/block/sda/</span></p>
<p>looking at device <span style="color: #483d8b;">&#8216;/block/sda&#8217;</span>:<br />
KERNEL==<span style="color: #483d8b;">&quot;sda&quot;</span><br />
SUBSYSTEM==<span style="color: #483d8b;">&quot;block&quot;</span><br />
DRIVER==<span style="color: #483d8b;">&quot;&quot;</span><br />
ATTR<span style="color: black;">&#123;</span><span style="color: #dc143c;">stat</span><span style="color: black;">&#125;</span>==<span style="color: #483d8b;">&quot; &nbsp;229567 &nbsp; &nbsp;[...] 456048 &nbsp;3697068&quot;</span><br />
ATTR<span style="color: black;">&#123;</span>size<span style="color: black;">&#125;</span>==<span style="color: #483d8b;">&quot;488397168&quot;</span><br />
ATTR<span style="color: black;">&#123;</span>removable<span style="color: black;">&#125;</span>==<span style="color: #483d8b;">&quot;0&quot;</span><br />
ATTR<span style="color: black;">&#123;</span><span style="color: #008000;">range</span><span style="color: black;">&#125;</span>==<span style="color: #483d8b;">&quot;16&quot;</span><br />
ATTR<span style="color: black;">&#123;</span>dev<span style="color: black;">&#125;</span>==<span style="color: #483d8b;">&quot;8:0&quot;</span></p>
<p>looking at parent device <span style="color: #483d8b;">&#8216;/devices/pci0000:00/00[...]:<br />
KERNELS==&quot;2:0:0:0&quot;<br />
SUBSYSTEMS==&quot;scsi&quot;<br />
DRIVERS==&quot;sd&quot;<br />
ATTRS{ioerr_cnt}==&quot;0&#215;0&quot;<br />
ATTRS{iodone_cnt}==&quot;0xcc26b&quot;<br />
ATTRS{iorequest_cnt}==&quot;0xcc26c&quot;<br />
ATTRS{iocounterbits}==&quot;32&quot;<br />
ATTRS{timeout}==&quot;30&quot;<br />
ATTRS{state}==&quot;running&quot;<br />
ATTRS{rev}==&quot;3.AA&quot;<br />
ATTRS{model}==&quot;ST3250310AS &nbsp; &nbsp; &quot;<br />
ATTRS{vendor}==&quot;ATA &nbsp; &nbsp; &quot;</span></div>
<p>These are in fact attributes that you can use in your rule to filter the devices. So for example,<br />
to run a shell script when a SCSI device is detected which has a size of 1GB, I&#8217;ll use the following line:</p>
<div class="python" style="font-family: monospace;color: #000066; border: 1px solid orange; margin: 5px; padding: 5px; background-color: #ffffff;">KERNEL==<span style="color: #483d8b;">&quot;sd?1&quot;</span>, ATTRS<span style="color: black;">&#123;</span>size<span style="color: black;">&#125;</span>==<span style="color: #483d8b;">&quot;1999872&quot;</span>, RUN+=<span style="color: #483d8b;">&quot;/usr/local/bin/recup_usb.sh&quot;</span></div>
<p>This line is to be put in a new file in /etc/udev/rules.d, named something like 91-backuptousbdrivetrigger.rules. It&#8217;s better to put the file at the end of the rules (the &#8220;91&#8243;), as not to disturb other module loadings.</p>
<p>The content of the recup_usb.sh file can be:</p>
<div class="python" style="font-family: monospace;color: #000066; border: 1px solid orange; margin: 5px; padding: 5px; background-color: #ffffff;"><span style="color: #808080; font-style: italic;">#!/bin/bash</span></p>
<p><span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: black;">&#91;</span> <span style="color: #483d8b;">&quot;${ACTION}&quot;</span> = <span style="color: #483d8b;">&quot;add&quot;</span> <span style="color: black;">&#93;</span>; then<br />
&nbsp; &nbsp;rm -rf /tmp/x<br />
&nbsp; &nbsp;mkdir /tmp/x<br />
&nbsp; &nbsp;mount -t vfat /dev/sdc1 /tmp/x<br />
&nbsp; &nbsp;find /tmp/x -name <span style="color: #483d8b;">&quot;*jpg&quot;</span> -<span style="color: #ff7700;font-weight:bold;">exec</span> /usr/bin/rsync -avz <span style="color: black;">&#123;</span><span style="color: black;">&#125;</span> &nbsp;\<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /home/foobar/Pictures/Incoming/`date +%Y-%m-%d`/ \;<br />
&nbsp; &nbsp;umount /tmp/x<br />
fi</div>
<p><em>(yes, I know this code is dirty, I should have used mktemp, but you get the point&#8230;)</em><br />
Don&#8217;t forget to chmod +x the shell script and reload the configuration with:</p>
<div class="python" style="font-family: monospace;color: #000066; border: 1px solid orange; margin: 5px; padding: 5px; background-color: #ffffff;">udevcontrol reload_rules</div>
<p>For more detailed information about writing udev rules, take a look at the<a href="http://reactivated.net/writing_udev_rules.html" class="liexternal"> official documentation</a>, or <a href="http://tlug.dnho.net/?q=smeserver_udev_automated_backups" class="liexternal">another&#8217;s detailed information</a> about doing the same thing.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gradstein.info/hardware/how-to-automatically-run-a-script-after-inserting-a-usb-device-on-ubuntu/feed/</wfw:commentRss>
		</item>
		<item>
		<title>HOWTO Installation of OpenWRT on a WGT634U usb router Part 2</title>
		<link>http://www.gradstein.info/hardware/howto-installation-of-openwrt-on-a-wgt634u-usb-router-part-2/</link>
		<comments>http://www.gradstein.info/hardware/howto-installation-of-openwrt-on-a-wgt634u-usb-router-part-2/#comments</comments>
		<pubDate>Mon, 18 Jun 2007 08:05:51 +0000</pubDate>
		<dc:creator>Lior Gradstein</dc:creator>
		
		<category><![CDATA[hardware]]></category>

	<!-- AutoMeta Start -->
	<category></category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://www.gradstein.info/hardware/howto-installation-of-openwrt-on-a-wgt634u-usb-router-part-2/</guid>
		<description><![CDATA[OK, we now have to configure the network. The goal is to be able to connect to our access point, where we&#8217;ll get information to connect to our &#8220;sound server&#8221; (I call it like that because I&#8217;ve still not decided between using mpd+mpc+samba or some more direct access like the use of esd).
We&#8217;ll set the [...]]]></description>
			<content:encoded><![CDATA[<p>OK, we now have to configure the network. The goal is to be able to connect to our access point, where we&#8217;ll get information to connect to our &#8220;sound server&#8221; (I call it like that because I&#8217;ve still not decided between using mpd+mpc+samba or some more direct access like the use of esd).</p>
<p>We&#8217;ll set the wifi interface as a client for a remote access point. We&#8217;ll keep the WAN interface with a static ip (here, 192.168.1.1)</p>
<p class="alert">Please note, that changing the configuration will make the remote network access as previously used unusable. The only secure access is still through the serial console.</p>
<p>First, edit the file /etc/config/network:</p>
<div class="python" style="font-family: monospace;color: #000066; border: 1px solid orange; margin: 5px; padding: 5px; background-color: #ffffff;">config switch eth0<br />
&nbsp; &nbsp; &nbsp;option vlan0 <span style="color: #483d8b;">&quot;0 1 2 3 5*&quot;</span><br />
&nbsp; &nbsp; &nbsp;option vlan1 <span style="color: #483d8b;">&quot;4 5&quot;</span><br />
<span style="color: black;">&#91;</span>&#8230;<span style="color: black;">&#93;</span> <span style="color: #808080; font-style: italic;"># localhost config here</span><br />
<span style="color: black;">&#91;</span>&#8230;<span style="color: black;">&#93;</span><br />
config interface wan<br />
&nbsp; &nbsp;option ifname <span style="color: #483d8b;">&quot;eth0.1&quot;</span><br />
&nbsp; &nbsp;option proto static<br />
&nbsp; &nbsp;option ipaddr <span style="color: #ff4500;">192.168</span><span style="color: #ff4500;">.1</span><span style="color: #ff4500;">.1</span><br />
&nbsp; &nbsp;option netmask <span style="color: #ff4500;">255.255</span><span style="color: #ff4500;">.255</span><span style="color: #ff4500;">.0</span><br />
<span style="color: black;">&#91;</span>&#8230;<span style="color: black;">&#93;</span><br />
config interface lan<br />
&nbsp; &nbsp;option <span style="color: #008000;">type</span> bridge<br />
&nbsp; &nbsp;option ifname <span style="color: #483d8b;">&quot;eth0.0&quot;</span><br />
&nbsp; &nbsp;option proto dhcp</div>
<p>And then the file /etc/config/wireless:</p>
<div class="python" style="font-family: monospace;color: #000066; border: 1px solid orange; margin: 5px; padding: 5px; background-color: #ffffff;">config wifi-device wifi0<br />
&nbsp; &nbsp;option <span style="color: #008000;">type</span> atheros<br />
&nbsp; &nbsp;option channel <span style="color: #ff4500;">8</span><br />
&nbsp; &nbsp;option disabled <span style="color: #ff4500;">0</span><br />
<span style="color: black;">&#91;</span>&#8230;<span style="color: black;">&#93;</span><br />
config wifi-iface<br />
&nbsp; &nbsp;option device wifi0<br />
&nbsp; &nbsp;option network lan<br />
&nbsp; &nbsp;option mode sta<br />
&nbsp; &nbsp;option ssid YOUR_SSID<br />
&nbsp; &nbsp;option encryption none<br />
&nbsp; &nbsp;option hidden <span style="color: #ff4500;">0</span></div>
<p>If your access point has some encryption, like WEP, do this instead of the wifi-iface block:</p>
<div class="python" style="font-family: monospace;color: #000066; border: 1px solid orange; margin: 5px; padding: 5px; background-color: #ffffff;">config wifi-iface<br />
&nbsp; &nbsp;option device wifi0<br />
&nbsp; &nbsp;option network lan<br />
&nbsp; &nbsp;option mode sta<br />
&nbsp; &nbsp;option ssid YOUR_SSID<br />
&nbsp; &nbsp;option encryption wep<br />
&nbsp; &nbsp;option key <span style="color: #ff4500;">1234567899</span><br />
&nbsp; &nbsp;option hidden <span style="color: #ff4500;">0</span></div>
<p>You can take a look at the different available options <a href="http://www.nbd.name/openwrt.html#x1-80001.2.1" class="liexternal">on this documentation</a>. If all is well, you should have an ip address on your br-lan interface (your WHGT634U hub port is bridged with the wifi interface).</p>
<p>Next part will be the most interesting :-) I think I&#8217;ll try all the different methods to implement an automatic player daemon. Direct methods, and indirect methods, using a share fielsystem like CIFS.</p>
<h2>Reference</h2>
<p><a href="http://www.larsen-b.com/Article/258.html" class="liexternal">Jkx@Home&#8217;s</a> article explaining another use of WGT634U</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gradstein.info/hardware/howto-installation-of-openwrt-on-a-wgt634u-usb-router-part-2/feed/</wfw:commentRss>
		</item>
		<item>
		<title>HOWTO Installation of OpenWRT on a WGT634U usb router</title>
		<link>http://www.gradstein.info/hardware/howto-installation-of-openwrt-on-a-wgt634u-usb-router/</link>
		<comments>http://www.gradstein.info/hardware/howto-installation-of-openwrt-on-a-wgt634u-usb-router/#comments</comments>
		<pubDate>Sun, 10 Jun 2007 15:00:15 +0000</pubDate>
		<dc:creator>Lior Gradstein</dc:creator>
		
		<category><![CDATA[hardware]]></category>

	<!-- AutoMeta Start -->
	<category>warning</category>
	<category>responsibility</category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://www.gradstein.info/hardware/howto-installation-of-openwrt-on-a-wgt634u-usb-router/</guid>
		<description><![CDATA[Before the 7.06 stable version of OpenWRT there were many problems for making USB audio working on this exceptional router (the only one I know with a USB port). Problems with kernel version 2.4/2.6, problems with alsa, problems with USB not working (usb2), etc. Take a look at the forums, and see all horrible, painful [...]]]></description>
			<content:encoded><![CDATA[<p><a href="/wp-content/uploads/img_0571.jpg" onclick="ps_imagemanager_popup(this.href,\'NetGear WGT634U with OpenWRT\',\'600\',\'800\');return false" onfocus="this.blur()" rel="lightbox"><img src="/wp-content/uploads/.thumbs/.img_0571.jpg" alt="NetGear WGT634U with OpenWRT" title="NetGear WGT634U with OpenWRT" align="left" width="72" height="96" border="0" /></a>Before the 7.06 stable version of OpenWRT there were many problems for making USB audio working on this exceptional router (the only one I know with a USB port). Problems with kernel version 2.4/2.6, problems with alsa, problems with USB not working (usb2), etc. Take a look at the <a href="http://forum.openwrt.org/search.php?search_id=574741614" class="liexternal">forums</a>, and see all horrible, painful modifications/patches you needed to apply to make it working.<br />
I have to say that the OpenWRT developers/contributors (and the forum members) <strong>did a wonderful job</strong> and <strong>corrected every known problems</strong>. So with this version, the installation is really straightforward!</p>
<p>Please read the following to get all the details.<br />
<span id="more-23"></span></p>
<p class="alert">I take no responsibility if you damage your router.</p>
<p class="information">This installation procedure has been done with <a href="http://openwrt.org/" class="liexternal">OpenWRT</a> <a href="http://downloads.openwrt.org/kamikaze/" class="liexternal">v. 7.06 (stable)</a>.</p>
<p>These requirements are not really requirements, but are the tools/material I used to make it work. So with these, you&#8217;re sure to make it work, like me :-)</p>
<h2>Hardware Requirements</h2>
<ul>
<li>A PC with a serial port</li>
<li>A breadboard</li>
<li>A serial cable that you can unwire</li>
<li>A network cable</li>
<li>A USB sound adapter</li>
</ul>
<h2>Software requirements</h2>
<ul>
<li>A connection to Internet</li>
<li>A Linux OS (I use Gentoo, but any will be OK)</li>
<li>A TFTPd server</li>
<li>A DHCP server</li>
<li>Screen software</li>
</ul>
<h2>Serial updates</h2>
<p><a href="/wp-content/uploads/WGT634U.jpg" onclick="ps_imagemanager_popup(this.href,\'WGT634U plugged on a breadboard\',\'800\',\'600\');return false" onfocus="this.blur()" rel="lightbox"><img src="/wp-content/uploads/.thumbs/.WGT634U.jpg" alt="WGT634U plugged on a breadboard" title="WGT634U plugged on a breadboard" align="left" width="96" height="72" border="0" /></a> First thing to do is build a serial connexion to the WGT634U to be able to flash it. Read the infos about the serial console <a href="http://wiki.openwrt.org/OpenWrtDocs/Hardware/Netgear/WGT634U" class="liexternal">on this page</a>. I choose to get a normal serial cable, remove one side of the cable and plug it on my breadboard, which is itself linked to the 3 pins on the NetGear.</p>
<p>Install TFTPd, and set it to get its files from
<div class="python" style="font-family: monospace;color: #000066; border: 1px solid orange; margin: 5px; padding: 5px; background-color: #ffffff;">/tftproot</div>
<p> (for example). Put the OpenWRT binary file for WGT634U in it (get it from  openWRT&#8217;s <a href="http://downloads.openwrt.org/kamikaze/7.06/brcm47xx-2.6/openwrt-wgt634u-2.6-squashfs.bin" class="liexternal">download section</a>).</p>
<p>Run the following command to catch everything from your Linux ttyS0 port:</p>
<p class="code">screen /dev/ttyS0 115200</p>
<p>Put a network cable on the WAN port of your Netgear, and connect it on your network (which should be linked to Internet):</p>
<p align="center"><img src="/wp-content/uploads/img_0570.jpg" alt="Back of the router, network on WAN" title="Back of the router, network on WAN" width="500" height="375" border="0" /></p>
<p><em>Here, the yellow network cable is plugged in the WAN port (right).</em></p>
<p>Unplug and replug the power supply cable, and at the same time press Ctrl-C several times.</p>
<p>You should get a
<div class="python" style="font-family: monospace;color: #000066; border: 1px solid orange; margin: 5px; padding: 5px; background-color: #ffffff;">CFE&gt;</div>
<p> prompt.<br />
Type: </p>
<p class="code">ifconfig eth0 -auto<br />
flash -noheader 192.168.0.44:openwrt-wgt634u-2.6-squashfs.bin flash0.os
</p>
<p>This will ask the DHCP server on the network for an ip address to set on the NetGear WAN interface<br />
(you can verify that the link is OK by pinging your TFTPd server:
<div class="python" style="font-family: monospace;color: #000066; border: 1px solid orange; margin: 5px; padding: 5px; background-color: #ffffff;">ping <span style="color: #ff4500;">192.168</span><span style="color: #ff4500;">.0</span><span style="color: #ff4500;">.44</span></div>
<p>) and then upload the OpenWRT image to the NetGear.<br />
When done, type reboot.</p>
<p>Wait a few minute, for the flash to be reinitialized, then hit enter to get a console.<br />
Set a password for root (which will activate the SSH daemon):
<div class="python" style="font-family: monospace;color: #000066; border: 1px solid orange; margin: 5px; padding: 5px; background-color: #ffffff;">passwd root</div>
<p>.<br />
Edit the file
<div class="python" style="font-family: monospace;color: #000066; border: 1px solid orange; margin: 5px; padding: 5px; background-color: #ffffff;">/etc/firewall.<span style="color: #dc143c;">user</span></div>
<p> and uncomment the two lines that allow SSH (port 22) connections to the WAN interface:</p>
<p class="code">### Open port to WAN<br />
# &#8212; This allows port 22 to be answered by (dropbear on) the router<br />
 iptables -t nat -A prerouting_wan -p tcp &#8211;dport 22 -j ACCEPT<br />
 iptables        -A input_wan      -p tcp &#8211;dport 22 -j ACCEPT
</p>
<p>Then reboot.<br />
You should now be able to log in remotely without using the serial cable!</p>
<p align="center"><img src="/wp-content/uploads/logon.png" alt="OpenWRT Logon" title="OpenWRT Logon" width="505" height="294" border="0" /></p>
<p>Logon and type:</p>
<p class="code">ipkg update<br />
ipkg install kmod-soundcore<br />
ipkg install kmod-usb-core<br />
ipkg install kmod-usb-ohci<br />
ipkg install kmod-usb-audio
</p>
<p>Verify that everything is OK by looking into the
<div class="python" style="font-family: monospace;color: #000066; border: 1px solid orange; margin: 5px; padding: 5px; background-color: #ffffff;">/dev</div>
<p> directory. There should be a
<div class="python" style="font-family: monospace;color: #000066; border: 1px solid orange; margin: 5px; padding: 5px; background-color: #ffffff;">/dev/control*</div>
<p> and a
<div class="python" style="font-family: monospace;color: #000066; border: 1px solid orange; margin: 5px; padding: 5px; background-color: #ffffff;">/dev/pcm*</div>
<p> file:</p>
<p class="code">root@OpenWrt:~# ls /dev/pcm* /dev/cont*<br />
/dev/controlC0  /dev/pcmC0D0c   /dev/pcmC0D0p
</p>
<p> If yes, cool! Otherwise, take a look at the kernel logs (
<div class="python" style="font-family: monospace;color: #000066; border: 1px solid orange; margin: 5px; padding: 5px; background-color: #ffffff;">dmesg</div>
<p>) for any problem.<br />
Now, your USB soundcard should be activated. <strong>But that&#8217;s not sufficient to make it work</strong>. You&#8217;ll have to add some symlinks to make alsa work correctly.<br />
First install alsa utilities:</p>
<p class="code">ipkg install alsa-utils<br />
ipkg install alsa-lib
</p>
<p>Then create the symlinks:</p>
<p class="code">mkdir /dev/snd<br />
ln -s /dev/controlC0 /dev/snd/controlC0<br />
ln -s /dev/pcmC0D0c /dev/snd/pcmC0D0c</p>
<p>Now run
<div class="python" style="font-family: monospace;color: #000066; border: 1px solid orange; margin: 5px; padding: 5px; background-color: #ffffff;">alsamixer</div>
<p>. You should get an ASCII vertical bar that allows you to set the volume:</p>
<p align="center"><img src="/wp-content/uploads/alsamixer.png" alt="alsamixer on openwrt" title="alsamixer on openwrt" width="667" height="443" border="0" /></p>
<p>That&#8217;s all for now. You now have a working WGT63U router which can play sound.</p>
<p class="information">Next part will be about configuring Wifi as a client, and installing mpd (http://www.musicpd.org/ Music Player Daemon) and linking it to a server to allow direct play from a remote server!
</p>
<h2>References</h2>
<ul>
<li><a href="http://forum.openwrt.org/search.php?search_id=574741614" class="liexternal">Search for WGT634U</a> on http://forum.openwrt.org</li>
<li><a href="http://devices.natetrue.com/musicap/" class="liexternal">Nathan True</a>&#8217;s howto for doing the same thing</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.gradstein.info/hardware/howto-installation-of-openwrt-on-a-wgt634u-usb-router/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
