<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.yobi.be/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=86.196.146.182</id>
	<title>YobiWiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.yobi.be/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=86.196.146.182"/>
	<link rel="alternate" type="text/html" href="https://wiki.yobi.be/index.php?title=Special:Contributions/86.196.146.182"/>
	<updated>2026-05-23T20:14:58Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki.yobi.be/index.php?title=Tux_Droid&amp;diff=2276</id>
		<title>Tux Droid</title>
		<link rel="alternate" type="text/html" href="https://wiki.yobi.be/index.php?title=Tux_Droid&amp;diff=2276"/>
		<updated>2007-07-01T15:26:48Z</updated>

		<summary type="html">&lt;p&gt;86.196.146.182: /* Misc */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Introduction===&lt;br /&gt;
_The_ gadget any linux geek should have ;-)&lt;br /&gt;
&lt;br /&gt;
Moreover it is designed in Belgium, tadaam!&lt;br /&gt;
&lt;br /&gt;
Having kids can help justifying such a, hum, impulsive buy ;-)&lt;br /&gt;
&lt;br /&gt;
http://www2.tux-is-alive.com/mediawiki/images/thumb/b/b9/Tux-proto.jpg/200px-Tux-proto.jpg&lt;br /&gt;
&lt;br /&gt;
===Sites===&lt;br /&gt;
* [http://www.kysoh.com Keep Your Sense Of Humor] Commercial site&lt;br /&gt;
* [http://www.tuxisalive.com/ Tux is alive!] Community site ([http://www.tuxisalive.com/recently_modified recent changes])&lt;br /&gt;
* [http://wiki.tuxisalive.com/index.php/Main_Page Tux Droid development wiki]&lt;br /&gt;
* [http://193.190.210.23/irclogs/index.html Logs] of the IRC channel #tuxdroid on irc.freenode.net&lt;br /&gt;
* Blogs aggregated [http://www.tuxisalive.com/siteplanet_view/ flatted] or [http://www.tuxisalive.com/tux-droid-forum/Members/jaguarondi/planet/ summarized]&lt;br /&gt;
* [http://www.tuxisalive.com/tux-droid-forum Forum]&lt;br /&gt;
* Mailing lists&lt;br /&gt;
** [https://lists.sourceforge.net/lists/listinfo/tux-droid-user tux-droid-user]&lt;br /&gt;
** [https://lists.sourceforge.net/lists/listinfo/tux-droid-svn tux-droid-svn]&lt;br /&gt;
** tux@kysoh.com was the old one(?)&lt;br /&gt;
* [https://svn.kysoh.com Subversion server]&lt;br /&gt;
* Bugreports&lt;br /&gt;
** [http://www.tuxisalive.com/issue-trackers/tux-daemon/ daemon]&lt;br /&gt;
** [http://www.tuxisalive.com/issue-trackers/firmware firmware/hardware]&lt;br /&gt;
** [http://www.tuxisalive.com/issue-trackers/api API]&lt;br /&gt;
** [http://www.tuxisalive.com/issue-trackers/tuxup bootloader]&lt;br /&gt;
* Atmel&lt;br /&gt;
** [http://www.atmel.com/dyn/products/product_card.asp?part_id=3302 ATmega88]&lt;br /&gt;
&lt;br /&gt;
===Audio===&lt;br /&gt;
* Plugging everything for the first time, and I got immediately a new Alsa device:&lt;br /&gt;
 cat /proc/asound/cards&lt;br /&gt;
 ...&lt;br /&gt;
 2 [default        ]: USB-Audio - TUX RF DONGLE &lt;br /&gt;
                      C2ME BELGIUM TUX RF DONGLE  at usb-0000:00:1d.2-1, full speed&lt;br /&gt;
And I can already place an Ekiga test call :-)&lt;br /&gt;
&amp;lt;br&amp;gt;Note that echo between internal speaker and microphone is very important so echo tests are quite terrible!&lt;br /&gt;
&amp;lt;br&amp;gt;Using the OSS emulation, I can play whatever I want:&lt;br /&gt;
 mpg321 -o oss -a /dev/dsp2 /path/to/some/mp3&lt;br /&gt;
 mplayer -ao oss:/dev/dsp2 http://www.paul.sladen.org/pronunciation/torvalds-says-linux.mp3&lt;br /&gt;
Or using the native alsa layer:&lt;br /&gt;
 mplayer -ao alsa:device=plughw=2.0 http://www.paul.sladen.org/pronunciation/torvalds-says-linux.mp3&lt;br /&gt;
Or using esound:&lt;br /&gt;
 esd -d plughw:2,0&lt;br /&gt;
 mplayer -ao esd http://www.paul.sladen.org/pronunciation/torvalds-says-linux.mp3&lt;br /&gt;
&lt;br /&gt;
XMMS:&lt;br /&gt;
* Select alsa output plugin -&amp;gt; configure -&amp;gt; type &amp;quot;plughw:1,0&amp;quot; manually and select software volume control.&lt;br /&gt;
* Select OSS output plugin -&amp;gt; configure -&amp;gt; USB but then no volume control is possible.&lt;br /&gt;
* Select esound output plugin and launch esd as shown above&lt;br /&gt;
&lt;br /&gt;
===Reflashing===&lt;br /&gt;
Then I learn that to run the new (alpha2) tuxdaemon I&#039;ll also need to flash the stuffed pinguin.&lt;br /&gt;
&amp;lt;br&amp;gt;Instructions are given [http://www.tuxisalive.com/documentation/how-to/updating-the-firmware on the web site] and are not... straightforward.&lt;br /&gt;
&lt;br /&gt;
Additional notes:&lt;br /&gt;
* Be sure to have installed properly libusb and to have mounted /proc/bus/usb, cf /usr/share/doc/libusb-0.1-4&lt;br /&gt;
** For users to have the right to access usbfs, change /etc/udev/rules.d/020_permissions.rules and add GROUP=usb:&lt;br /&gt;
 SUBSYSTEM==&amp;quot;usb_device&amp;quot;,        MODE=&amp;quot;0664&amp;quot;, GROUP=&amp;quot;usb&amp;quot;&lt;br /&gt;
* Recompile dfu-programmer from sources! I first tried alien on the rpm but there were glibc problems and when trying tuxup fuxusb.hex I got the following &amp;quot;common problem&amp;quot; but here it&#039;s really not because of permission problems.&lt;br /&gt;
 Programming fuxusb.hex in USB CPU&lt;br /&gt;
 Tux not found on USB&lt;br /&gt;
* They explain about tuxup fuxrf.hex and tuxup --main . but I had also to fix the tux rf counterpart: tuxup tuxrf.hex&lt;br /&gt;
* At the end, replug the dongle and restart the tux&lt;br /&gt;
===Compiling a firmware===&lt;br /&gt;
 apt-get install gcc-avr avr-libc gdb-avr&lt;br /&gt;
Follow the [http://www.tuxisalive.com/documentation/how-to/setup-the-avr-tool-chain-and-compile-the-firmware howto] starting from SVNWCRev section.&lt;br /&gt;
&amp;lt;br&amp;gt;To get the proper header files to compile SVNCRev:&lt;br /&gt;
 apt-get install libsvn-dev&lt;br /&gt;
And edit svncrev-0.1/config.mk to fix the following path:&lt;br /&gt;
 APR_INCLUDE=/usr/include/apr-1.0&lt;br /&gt;
===Personalizing the firmware===&lt;br /&gt;
For basic stuff, we&#039;ll only change the tuxcore.eep file where are stored the basic standalone behaviors.&lt;br /&gt;
&amp;lt;br&amp;gt;Edit common/config.h based on commands listed in common/commands.h&lt;br /&gt;
&amp;lt;br&amp;gt;Each line is one first byte (what for?) then a frame of 4 bytes to combine between 1 and 4 commands as explained in commands.h &lt;br /&gt;
&amp;lt;br&amp;gt;My first personalized firmware has the following behavior:&lt;br /&gt;
&amp;lt;br&amp;gt;Eyes closed when no rf link and opened when rf link is established.&lt;br /&gt;
&amp;lt;br&amp;gt;Note that it would be easier if there was a CLOSE_EYES_CMD&lt;br /&gt;
&amp;lt;br&amp;gt;I solved it by using the seq &amp;quot;OPEN_EYES_CMD, BLINK_EYES_CMD, 1, 0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Remote Control===&lt;br /&gt;
(from the forum)&lt;br /&gt;
&amp;lt;br&amp;gt;Press &#039;ALT&#039; then &#039;Tux and phone&#039; and you&#039;re in test mode.&lt;br /&gt;
&amp;lt;br&amp;gt;The arrows should move tux, if you press a digit key, you change the number of movements. So 4 then up will move the eyes 4 times (2 blinks: close - open -close - open)&lt;br /&gt;
&amp;lt;br&amp;gt;Read firmware/tuxcore/trunk/standalone.c l262 to see all possiblities&lt;br /&gt;
===Raw commands===&lt;br /&gt;
gtdi allows to send raw commands, see /firmware/tuxdefs/commands.h&lt;br /&gt;
&lt;br /&gt;
===Misc Tips===&lt;br /&gt;
* First time, don&#039;t forget to plug Tux to the power adaptor for a while (~5h)&lt;br /&gt;
* Want to get Acapela Telecom? It&#039;s actually available as the [http://www.tuxisalive.com/software/tts-daemon tts-daemon]&lt;br /&gt;
&lt;br /&gt;
===Misc Problems===&lt;br /&gt;
* tuxdaemon from svn eats all CPU when running daemonised :-(&lt;br /&gt;
* tuxttsdaemon launched by gtdi eated 100% cpu after a while with tux off&lt;br /&gt;
* gtdi &lt;br /&gt;
** source to be modified: add a space between gnome-terminal -e and &amp;quot;the_commands&amp;quot;&lt;br /&gt;
** should check for the presence of gnome--terminal or fallback to xterm&lt;br /&gt;
** tuxttsdaemon button desync&lt;br /&gt;
* wrong comments in commands.h 0x1A &amp;amp; 0x1B control both leds&lt;br /&gt;
* we should have save/restore raw commands for led &amp;amp; position&lt;br /&gt;
&lt;br /&gt;
===Misc Questions===&lt;br /&gt;
* How to control the volume by software?&lt;br /&gt;
* How tuxes see each other? They ping constantly through IR (from the right eye) as it can be seen through a webcam.&lt;br /&gt;
* How a dongle and a tux are paired? What if many tuxes are present simultaneously?&lt;br /&gt;
&lt;br /&gt;
===Misc===&lt;br /&gt;
* Voice recognition&lt;br /&gt;
** Here is a project to help open source developers make their project work better by submitting your speech samples to add them to a speech corpus used to train 4 open source projects that work on that task: http://www.voxforge.org/home&lt;br /&gt;
** Here is the wiki page about speech recognition on the official&#039;s Tux droid development wiki: http://wiki.tuxisalive.com/index.php/Speech_recognition&lt;br /&gt;
&lt;br /&gt;
===Python===&lt;br /&gt;
====Examples====&lt;br /&gt;
I don&#039;t know python so for those who don&#039;t know it neither, here&#039;s a small snippet to start with (from Fosdem presentation):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
&lt;br /&gt;
import sys&lt;br /&gt;
sys.path.append(&#039;/opt/tuxdroid/api/python&#039;)&lt;br /&gt;
from tux import *&lt;br /&gt;
&lt;br /&gt;
tux.tts.select_voice(3,150)&lt;br /&gt;
tux.cmd.leds_blink(200,10)&lt;br /&gt;
tux.cmd.mouth_on_free(22)&lt;br /&gt;
tux.tts.speak(&amp;quot;The box said: &#039;Requires Windows 95 or better&#039;, so I installed LINUX&amp;quot;)&lt;br /&gt;
tux.cmd.eyes_on_free(4)&lt;br /&gt;
tux.cmd.wings_on_free(4)&lt;br /&gt;
tux.tts.speak(&amp;quot;ha ha ha&amp;quot;)&lt;br /&gt;
if tux.event.wait_head_bt_pushed(60):&lt;br /&gt;
    tux.tts.speak(&amp;quot;Ouch! That hurts!&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Problem: sometimes there is a delay before the speech and then movements/speech get desync.&lt;br /&gt;
&amp;lt;br&amp;gt;It could be nice to get events from tts daemon when starting and stopping the speech.&lt;br /&gt;
&lt;br /&gt;
To launch gtdi from /usr/local/bin/gtdi I wrote a little bash script:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
cd /opt/tuxdroid/lib/gtdi&lt;br /&gt;
./gtdi.py&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To get an interactive python shell I wrote this script /usr/local/bin/tuxsh:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
python -i -c &amp;quot;import sys;sys.path.append(&#039;/opt/tuxdroid/api/python&#039;);from tux import *&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
You can run it interactively or piping some commands:&lt;br /&gt;
 echo &#039;tux.cmd.mouth_open()&#039;|./tuxsh&lt;br /&gt;
====Python API====&lt;br /&gt;
List of functions can be generated by&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
gawk &#039;/^class/{match($0,/class +TUX(.*)\(object\):/,a);&lt;br /&gt;
               if(a[1]==&amp;quot;TCPCommunicator&amp;quot;)c=&amp;quot;&amp;quot;; else c=tolower(a[1])&amp;quot;.&amp;quot;}&lt;br /&gt;
      /^ +def/ &amp;amp;&amp;amp; !/__init__/{$0=gensub(/^ +def (.*)self,?(.*):/,&amp;quot;tux.&amp;quot; c &amp;quot;\\1\\2&amp;quot;,1);print}&#039;\&lt;br /&gt;
/opt/tuxdroid/api/python/tuxapi_class.py&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or much cleaner: &lt;br /&gt;
 tux.misc.build_documentation(&#039;/tmp/tuxapi.html&#039;)&lt;br /&gt;
 tux.misc.doc(tux)&lt;br /&gt;
 tux.misc.doc(tux.hw)&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Try also help(tux.cmd)&lt;br /&gt;
&lt;br /&gt;
===IR===&lt;br /&gt;
* http://www2.tux-is-alive.com/wiki/Freaks_Asking_Questions#How_to_get_an_IR_RC5_code_from_the_API.3F&lt;br /&gt;
* Looks like some of the keys of my remote are RC5 and some not... I&#039;ll try with lirc-audio hw to capture raw streams and analysing them.&lt;/div&gt;</summary>
		<author><name>86.196.146.182</name></author>
	</entry>
</feed>