Here is a video I made for the Syno contest:
Please read more!!
I was able to successfully cross-compile and run Julius Voice Recognition Engine on my Synology DS209.
http://julius.sourceforge.jp/en_index.php
http://voxforge.org/home/downloads#QuickStart%20Anchor
I am working on trying to compile Festival w/ MBROLA engine in place of Flite for better TTS voices. I am also looking at Cepstral and AT&T Natural Voices.
http://www.cstr.ed.ac.uk/projects/festival/
http://tcts.fpms.ac.be/synthesis/mbrola.html
http://cepstral.com/
http://www.voiceforge.com/demo/
http://www2.research.att.com/~ttsweb/tts/demo.php
Another good program to look at would be DomotiGa + Gambas for linux HA.
http://www.domotiga.nl/
Monday, February 22, 2010
Flite TTS on a Synology NAS
I was able to successfully cross compile a text-to-speech engine called Flite which is very lightweight to run on my DS209j. This means you can use HEYU or Misterhouse to output speech upon an event.
http://www.speech.cs.cmu.edu/flite/
Here is my config file generated from running configure:
http://www.speech.cs.cmu.edu/flite/
Here is my config file generated from running configure:
root@xubuntu-vm:/usr/local/flite-1.3-release# cat config/config # -*- makefile -*- # # This file is automatically generated by configure. # Do not hand edit. TARGET_OS = linux-gnu TARGET_CPU = powerpc HOST_OS = linux-gnu HOST_CPU = powerpc CC = /usr/local/powerpc-linux/bin/powerpc-linux-gcc CFLAGS = -I/usr/local/powerpc-linux/include -Wall CPPFLAGS = DEFS = -DWORDS_BIGENDIAN=1 #DEFS = -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DWORDS_BIGENDIAN=1 -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 # we don't use these anywhere SHFLAGS = AR = /usr/local/powerpc-linux/bin/powerpc-linux-ar RANLIB = /usr/local/powerpc-linux/bin/powerpc-linux-ranlib INSTALL = /usr/bin/install -c M68KCC = AUDIODRIVER = oss AUDIODEFS = -DCST_AUDIO_LINUX AUDIOLIBS = LEXDEFS = VOXDEFS = OTHERLIBS = MMAPTYPE = posix STDIOTYPE = stdio FL_LANG = usenglish FL_VOX = cmu_us_kal16 FL_LEX = cmulex prefix = /usr/local exec_prefix = ${prefix} EXEEXT = INSTALLBINDIR = ${exec_prefix}/bin INSTALLLIBDIR = ${exec_prefix}/lib INSTALLINCDIR = ${prefix}/include/flite
Misterhouse on Synology NAS
Misterhouse:
http://misterhouse.sourceforge.net/
I've confirmed that misterhouse does work with /dev/usb/ttyUSB0.
I recommend unzipping Misterhouse in /usr/local
http://misterhouse.sourceforge.net/
I've confirmed that misterhouse does work with /dev/usb/ttyUSB0.
I recommend unzipping Misterhouse in /usr/local
DiskStation> cd /usr/local DiskStation> gunzip < /volume1/Downloads/misterhouse-2.105.tar.gz | tar xvf -Make sure you run the configure which uses h2ph. h2ph is just a perl script, but you have to make sure you download the your systems GPL source from Synology and change one line in the Misterhouse configure script:
#cd /usr/include cd /usr/local/powerpc-linux/includeWhen you run the script it will remove all Windows files and will use the C header files to produce Perl header files ending in .ph Follow this: http://misterhouse.sourceforge.net/install.html#quick_install_instructions and this: http://misterhouse.sourceforge.net/install.html#unix_detailed_install_instructions In /usr/local/mh/bin create a file called mh.private.ini and add these basic entries:
sound_program= latitude=12.345678 longitude=-123.456789 time_zone=-8 city=YourCity zone=SomeMajorCityNearYou state=YourStateAbbreviation zip_code= 12345 dbi_user=mhuser dbi_password=SomePassword voice_text= cm11_port=/dev/ttyUSB0 tk=0Now when you start Misterhouse do something like this to run it in the background and have its output go to some logfile:
DiskStation> cd /usr/local/mh/bin DiskStation> ./mhl & > /var/log/mh.outNow you should be able to go to http://192.168.x.x:8080 and access Misterhouse. Please read the Misterhosue docs from here...
CM11a, Heyu, and domus.Link running on Synology NAS
I have an old HD11a which is just a re-branded CM11a, and I verified that it does work through the usb/serial converter I have.
Using optware ipkg (ipkg is a must!) I was able to install HEYU. They also have one called Ppower or Penguin Power, which I assume would also work:
domus.Link PHP frontend for HEYU
I wasn't too excited about cgi/perl scripts, but I found what I think is one of the only PHP front ends which runs perfectly on the Syno after slight tweaking of the php.ini file.
domus.Link
http://domus.link.co.pt/
I was even able to create a 3rd-Party applications node for it to run embedded in the web manager.
Using optware ipkg (ipkg is a must!) I was able to install HEYU. They also have one called Ppower or Penguin Power, which I assume would also work:
DiskStation> ipkg list | grep "home automation" heyu - 2.8.0-1 - X10 home automation control using the CM11A ppower - 0.1.5-1 - Ppower, short for 'Penguin Power', is a piece of software for controlling x10 home automation equipment connected to the comput
domus.Link PHP frontend for HEYU
I wasn't too excited about cgi/perl scripts, but I found what I think is one of the only PHP front ends which runs perfectly on the Syno after slight tweaking of the php.ini file.
domus.Link
http://domus.link.co.pt/
I was even able to create a 3rd-Party applications node for it to run embedded in the web manager.
DiskStation> pwd /usr/syno/synoman/webman/3rdparty DiskStation> ls -laR domusLink/ domusLink/: drwxr-xr-x 2 root root 4096 Dec 23 00:53 . drwxr-xr-x 3 root root 4096 Dec 23 00:33 .. -rw-r--r-- 1 root root 198 Dec 23 01:01 application.cfg lrwxrwxrwx 1 root root 44 Dec 23 00:53 images -> /volume1/web/domus.Link/theme/default/images DiskStation> cat application.cfg text_enu = domus.Link description_enu = domus.Link - Home Automation Interface type = embedded protocol = https port = 443 path = /domus.Link icon_16 = images/menu_home_on.png icon_32 = images/menu_home_on.png
Cross-Compiling Bottlerocket for CM17a Firecracker on Synology
Cross-Compiling Bottlerocket, which uses the Firecracker CM17a:
http://www.linuxha.com/bottlerocket/
Following the 3rd-party app integration guide; configure, make, make install. This puts it in your local machines /usr/local/bin. You then have to upload the program 'br' to your Synology in the same directory.
Set your cross-compiling environment variables to point to the toolchain you installed in /usr/local:
Run the configure that came with the code giving it a few extra parameters as specified in the guide:
Run make:
Run 'make install' which installs it in /usr/local/bin on your local machine:
Now copy the file /usr/local/bin/br to your synology in the same directory.
Once that is running, you issue commands as such:
http://www.linuxha.com/bottlerocket/
Following the 3rd-party app integration guide; configure, make, make install. This puts it in your local machines /usr/local/bin. You then have to upload the program 'br' to your Synology in the same directory.
Set your cross-compiling environment variables to point to the toolchain you installed in /usr/local:
root@xubuntu-vm:/usr/local/bottlerocket-0.04c# export CC=/usr/local/powerpc-linux/bin/powerpc-linux-gcc root@xubuntu-vm:/usr/local/bottlerocket-0.04c# export LD=/usr/local/powerpc-linux/bin/powerpc-linux-ld root@xubuntu-vm:/usr/local/bottlerocket-0.04c# export RANLIB=/usr/local/powerpc-linux/bin/powerpc-linux-ranlib root@xubuntu-vm:/usr/local/bottlerocket-0.04c# export CFLAGS="-I/usr/local/powerpc-linux/include" root@xubuntu-vm:/usr/local/bottlerocket-0.04c# export LDFLAGS="-L/usr/local/powerpc-linux/lib"
Run the configure that came with the code giving it a few extra parameters as specified in the guide:
root@xubuntu-vm:/usr/local/bottlerocket-0.04c# ./configure \ > --host=powerpc-unknown-linux \ > --target=powerpc-unknown-linux \ > --build=i686-pc-linux \ > --prefix=/usr/local creating cache ./config.cache checking for gcc... /usr/local/powerpc-linux/bin/powerpc-linux-gcc checking whether the C compiler (/usr/local/powerpc-linux/bin/powerpc-linux-gcc -I/usr/local/powerpc-linux/include -L/usr/local/powerpc-linux/lib) works... yes checking whether the C compiler (/usr/local/powerpc-linux/bin/powerpc-linux-gcc -I/usr/local/powerpc-linux/include -L/usr/local/powerpc-linux/lib) is a cross-compiler... yes checking whether we are using GNU C... yes checking whether /usr/local/powerpc-linux/bin/powerpc-linux-gcc accepts -g... yes checking how to run the C preprocessor... /usr/local/powerpc-linux/bin/powerpc-linux-gcc -E checking for a BSD compatible install... /usr/bin/install -c checking for features.h... yes checking for errno.h... yes checking for sys/termios.h... yes checking for termios.h... yes guessing x10 port using /dev/ttyS0 for x10 port updating cache ./config.cache creating ./config.status creating Makefile creating config.h
Run make:
root@xubuntu-vm:/usr/local/bottlerocket-0.04c# make /usr/local/powerpc-linux/bin/powerpc-linux-gcc -I/usr/local/powerpc-linux/include -I. -Wall -O2 -DX10_PORTNAME=\"/dev/ttyS0\" -DHAVE_CONFIG_H -c ./br_cmd.c /usr/local/powerpc-linux/bin/powerpc-linux-gcc -I/usr/local/powerpc-linux/include -I. -Wall -O2 -DX10_PORTNAME=\"/dev/ttyS0\" -DHAVE_CONFIG_H -c ./br.c /usr/local/powerpc-linux/bin/powerpc-linux-gcc -I/usr/local/powerpc-linux/include -I. -Wall -O2 -DX10_PORTNAME=\"/dev/ttyS0\" -DHAVE_CONFIG_H -o br br.o br_cmd.o
Run 'make install' which installs it in /usr/local/bin on your local machine:
root@xubuntu-vm:/usr/local/bottlerocket-0.04c# make install /usr/bin/install -c -d -m 755 /usr/local/bin /usr/bin/install -c -m 555 br /usr/local/bin
Now copy the file /usr/local/bin/br to your synology in the same directory.
Once that is running, you issue commands as such:
DiskStation> cd /usr/local/bin/ DiskStation> ./br BottleRocket version 0.04c Usage: ./br [][ ( )
...] Options: -v, --verbose add v's to increase verbosity -x, --port=PORT set port to use -c, --house=[A-P] use alternate house code (default "A") -n, --on=LIST turn on devices in LIST -f, --off=LIST turn off devices in LIST -N, --ON turn on all devices in housecode -F, --OFF turn off all devices in housecode -d, --dim=LEVEL[,LIST] dim devices in housecode to relative LEVEL -B, --lamps_on turn all lamps in housecode on -D, --lamps_off turn all lamps in housecode off -r, --repeat=NUM repeat commands NUM times (0 = ~ forever) -h, --help this help is a comma separated list of devices (no spaces), each ranging from 1 to 16
is an integer from -12 to 12 (0 means no change) is a letter between A and P is one of ON, OFF, DIM, BRIGHT, ALL_ON, ALL_OFF, LAMPS_ON or LAMPS_OFF For native commands, should only be specified for ON or OFF. DiskStation> ./br -x /dev/ttyUSB0 -v M3 OFF ./br: Turning off appliance M3 DiskStation> ./br -x /dev/ttyUSB0 -v M3 ON ./br: Turning on appliance M3 DiskStation> ./br -x /dev/ttyUSB0 -v M3 OFF ./br: Turning off appliance M3 DiskStation> ./br -x /dev/ttyUSB0 -v C1 ON ./br: Turning on appliance C1 DiskStation> ./br -x /dev/ttyUSB0 -v C1 OFF ./br: Turning off appliance C1 DiskStation> ./br -x /dev/ttyUSB0 -v C1 ON ./br: Turning on appliance C1 DiskStation> ./br -x /dev/ttyUSB0 -v C3 ON ./br: Turning on appliance C3 DiskStation> ./br -x /dev/ttyUSB0 -v C3 OFF ./br: Turning off appliance C3 DiskStation> ./br -x /dev/ttyUSB0 -v C3 ON ./br: Turning on appliance C3 DiskStation> ./br -x /dev/ttyUSB0 -v C1 OFF ./br: Turning off appliance C1 DiskStation> ./br -x /dev/ttyUSB0 -v C3 OFF ./br: Turning off appliance C3 DiskStation> ./br -x /dev/ttyUSB0 -v C LAMPS_ON DiskStation> ./br -x /dev/ttyUSB0 -v C LAMPS_OFF DiskStation> ./br -x /dev/ttyUSB0 -v C1 ON ./br: Turning on appliance C1 DiskStation> ./br -x /dev/ttyUSB0 -v -d25 C1 ./br: For dimming either specify just a dim level or a comma separated list containing the dim level and the devices to dim. ./br: Valid dimlevels are numbers between -12 and 12. DiskStation> ./br -x /dev/ttyUSB0 -v -d6 C1 BottleRocket version 0.04c Usage: ./br [
][ ( )
...] Options: -v, --verbose add v's to increase verbosity -x, --port=PORT set port to use -c, --house=[A-P] use alternate house code (default "A") -n, --on=LIST turn on devices in LIST -f, --off=LIST turn off devices in LIST -N, --ON turn on all devices in housecode -F, --OFF turn off all devices in housecode -d, --dim=LEVEL[,LIST] dim devices in housecode to relative LEVEL -B, --lamps_on turn all lamps in housecode on -D, --lamps_off turn all lamps in housecode off -r, --repeat=NUM repeat commands NUM times (0 = ~ forever) -h, --help this help is a comma separated list of devices (no spaces), each ranging from 1 to 16
is an integer from -12 to 12 (0 means no change) is a letter between A and P is one of ON, OFF, DIM, BRIGHT, ALL_ON, ALL_OFF, LAMPS_ON or LAMPS_OFF For native commands, should only be specified for ON or OFF. DiskStation> ./br -x /dev/ttyUSB0 -v -cC -d6,1 ./br: Brightening lamp C1 by 6. DiskStation> ./br -x /dev/ttyUSB0 -v -cC -d-6,1 ./br: Dimming lamp C1 by 6. DiskStation> ./br -x /dev/ttyUSB0 -v -cC -d6,3 ./br: Brightening lamp C3 by 6. DiskStation> ./br -x /dev/ttyUSB0 -v -cC -d-3,3 ./br: Dimming lamp C3 by 3. DiskStation> ./br -x /dev/ttyUSB0 -v -cC -d-3,3 ./br: Dimming lamp C3 by 3. DiskStation> ./br -x /dev/ttyUSB0 -v -cC -d-3,2 ./br: Dimming lamp C2 by 3. DiskStation> ./br -x /dev/ttyUSB0 -v -cC -d3,2 ./br: Brightening lamp C2 by 3. DiskStation> ./br -x /dev/ttyUSB0 -v C LAMPS_OFF
Home Automation on Synology NAS
I am the proud owner of a Synology DS209j NAS. This NAS has firmware that allows much more than just storage. While I only wanted one computer on 2/47 in the house. I also wanted a home automation server. Unfortunately, the Synology NAS devices weren't intended to be home automation servers. Therefore, a lot of modification has been required to get it to act as a home automation server. These next few posts have been up in the Synology forum for a while now, but I wanted to add my work to my own blog so please click 'read more' to expand this post...
http://forum.synology.com/enu/viewtopic.php?f=27&t=19788#p81040
I have a Synology DS209j, and I'll always run the latest firmware.
I've installed Xubuntu 9.04 in a virtual machine on my mac.
Following this page:
http://www.synology.com/us/support/3rd-party_application_integration.php
There is a document:
http://download.synology.com/download/ds/userguide/Synology%20NAS%20Server%203rd-Party%20Apps%20Integration%20Guide.pdf
Following the document I've downloaded the latest toolchain from Synology as well as the latest GPL source:
http://www.synology.com/us/gpl/index.php
As far as usb to serial hardware goes, I am using this product from Parallax as it give you proper RS232 levels and is very affordable:
http://www.parallax.com/tabid/768/ProductID/378/Default.aspx
From that page I followed the link to the external FTDI drivers for linux.
I renamed the ftdi_sio header and c file to.orig and placed these new files in their location in the synology source. From their I followed the document and made the modules.
Now i've got usbserial.ko and ftdi_sio.ko somewhere on my DS209j
Now you have to load the modules into the kernel and create the devices:
Also, add some lines like these to /etc/rc.local to make it persistent over reboot:
run the command 'dmesg' and you should see something like this:
The X-10 device I got working for now is known as the Firecracker CM17a, and the HD11A/CM11A 2-way computer interface
http://forum.synology.com/enu/viewtopic.php?f=27&t=19788#p81040
I have a Synology DS209j, and I'll always run the latest firmware.
I've installed Xubuntu 9.04 in a virtual machine on my mac.
Following this page:
http://www.synology.com/us/support/3rd-party_application_integration.php
There is a document:
http://download.synology.com/download/ds/userguide/Synology%20NAS%20Server%203rd-Party%20Apps%20Integration%20Guide.pdf
Following the document I've downloaded the latest toolchain from Synology as well as the latest GPL source:
http://www.synology.com/us/gpl/index.php
As far as usb to serial hardware goes, I am using this product from Parallax as it give you proper RS232 levels and is very affordable:
http://www.parallax.com/tabid/768/ProductID/378/Default.aspx
From that page I followed the link to the external FTDI drivers for linux.
I renamed the ftdi_sio header and c file to
Now i've got usbserial.ko and ftdi_sio.ko somewhere on my DS209j
Now you have to load the modules into the kernel and create the devices:
insmod usbserial.ko insmod ftdi.ko mknod /dev/usb/ttyUSB0 c 188 0 mknod /dev/usb/ttyUSB1 c 188 1
Also, add some lines like these to /etc/rc.local to make it persistent over reboot:
insmod /volume1/archive/usbserial.ko insmod /volume1/archive/ftdi_sio.ko mknod /dev/usb/ttyUSB0 c 188 0 mknod /dev/usb/ttyUSB1 c 188 1
run the command 'dmesg' and you should see something like this:
usb 1-2.1: new full speed USB device using ehci_hcd and address 15 usb 1-2.1: configuration #1 chosen from 1 choice ftdi_sio 1-2.1:1.0: FTDI USB Serial Device converter detected drivers/usb/serial/ftdi_sio.c: Detected FT232RL drivers/usb/serial/ftdi_sio.c: Number of endpoints 2 drivers/usb/serial/ftdi_sio.c: Endpoint 1 MaxPacketSize 16384 drivers/usb/serial/ftdi_sio.c: Endpoint 2 MaxPacketSize 16384 drivers/usb/serial/ftdi_sio.c: Setting MaxPacketSize 16384 usb 1-2.1: FTDI USB Serial Device converter now attached to ttyUSB0
The X-10 device I got working for now is known as the Firecracker CM17a, and the HD11A/CM11A 2-way computer interface
Subscribe to:
Posts (Atom)