# Installing Galleon on Linux



## smoothtivo

I know there are a few people that have been installing Galleon on Linux. I am a bit new to Linux and in the process of installing Galleon on my new linux system. The instructions are a bit confusing to me and I noticed they were updated for version Galleon 1.8. Has anyone got these to work? I am not sure about the 2nd and 3rd step. Anyone have any experience with getting this running?

Thanks,
smoothtivo

Linux

* Install the Java JRE.
* The Java JRE bin directory must be in you system PATH environment variable.
* The JAVA_HOME environment variable must point to the root of the Java JRE installation.
* Disable IPv6.
* Configure your system's name in /etc/hosts under the actual IP address, not 127.0.0.1
* If you are upgrading a previous installation, make a backup of the configure.xml file in the Galleon conf directory.
* Extract the Galleon zip file to a directory.
* Restore the backed up configure.xml file to the Galleon conf directory.
* Make the scripts in the Galleon bin directory executable: chmod a+x *.sh
* Run the Galleon server from the Galleon bin directory: run.sh


----------



## azitnay

Don't let the steps confuse you too much -- just download the JRE (download the RPM from Sun if you want the easiest possible install), and if you run into trouble, ask for help here.

In answer to your question, yes, I have personally run Galleon 1.8.0 fine on a (Fedora Core 4) Linux system.

Drew


----------



## smoothtivo

Sweet thanks for any help.

I have the source files extracted to my home directory and have set the JAVA_HOME to look like this in the run.sh and gui.sh:

JAVA_HOME=/usr/java/jre1.5.0_05

I am assuming that "The Java JRE bin directory must be in you system PATH environment variable." means when i run the program to put the path of java in the command???

Few more questions.
Where do I disable ip6?
What do I put in the host file?

THanks again,

smooth


----------



## crumley

smoothtivo said:


> Sweet thanks for any help.
> Few more questions.
> Where do I disable ip6?
> What do I put in the host file?


You may not have to remove ipv6. I run ipv6 and Galleon works fine for me. To see if you are running ipv6 run:
/sbin/lsmod | grep ipv6

If you are running it and you want to stop it, then you will have to prevent the module from loading. The way that works varies a bit between distribtuions, but you'll want to take a look at the /etc/modules* files.

As for the host file, you will want something like :
127.0.0.1 localhost
192.168.0.2 your_hostname

If you are using DHCP to set your ip address, then you may need something a bit different.


----------



## azitnay

Assuming you're using modprobe (Fedora, the only Linux distribution I currently use, does), adding the following lines to /etc/modprobe.conf turns off ipv6:

alias net-pf-10 off
alias ipv6 off

I've never found a reliable way to put it into effect aside from rebooting, but you might be able to stop networking and use depmod.

Drew


----------



## smoothtivo

I am assuming that I have it set up correctly but I get this when I run, run.sh
[[email protected] bin]$ ./run.sh
Exception in thread "main" java.lang.NoClassDefFoundError: while resolving class: org.lnicholls.galleon.util.Tools
at java.lang.VMClassLoader.transformException(java.lang.Class, java.lang.Throwable)


----------



## dachtler

Has anyone looking at this thread made a start/stop file for /etc/init.d for galleon, so you can have it automatically start at boot? I have used one that I found elsewhere on tivocommunity.com (I can't remember where now), and it will work to start galleon if the system is completely booted, but won't work during boot up. Also, the stop command does not work (it uses pkill, which doesn't seem to correctly recognize galleon).

I have 1.9.0 installed and working on Fedora Core 4, except for this one issue.

Thanks,

Jason


----------



## crumley

Hhm, here's the one I use. Note that it is "pkill -f" and that you may have to change the path to your galleon directory. It is a little kludgy because it changes into the galleon bin directory, but that's necessary because of the relative paths in some of the galleon files. It really would be better to define an environment variable for the galleon directory and remove those relative paths.

#!/bin/sh
case "$1" in
start)
echo "Starting Galleon TiVo HME server"
cd /usr/local/galleon/bin; ./run.sh &
;;
stop)
echo "Stopping Galleon TiVo server"
pkill -f galleon
;;
*)
echo "Usage: /etc/init.d/galleon {start|stop}"
exit 1
;;
esac


----------



## crumley

smoothtivo, it looks like it may not be finding all of your galleon installation. Are you sure that you installed all of galleon, and that you are running run.sh from the galleon directory?


----------



## azitnay

dachtler said:


> Has anyone looking at this thread made a start/stop file for /etc/init.d for galleon, so you can have it automatically start at boot? I have used one that I found elsewhere on tivocommunity.com (I can't remember where now), and it will work to start galleon if the system is completely booted, but won't work during boot up. Also, the stop command does not work (it uses pkill, which doesn't seem to correctly recognize galleon).
> 
> I have 1.9.0 installed and working on Fedora Core 4, except for this one issue.
> 
> Thanks,
> 
> Jason


For your start-at-boot problem, I wonder if bumping down where galleon starts in the chain might help (i.e. maybe it's starting before something else it needs, like networking)... Try giving it a start priority of 99.

Drew


----------



## dachtler

crumley said:


> Hhm, here's the one I use. Note that it is "pkill -f" and that you may have to change the path to your galleon directory. It is a little kludgy because it changes into the galleon bin directory, but that's necessary because of the relative paths in some of the galleon files. It really would be better to define an environment variable for the galleon directory and remove those relative paths.
> 
> #!/bin/sh
> case "$1" in
> start)
> echo "Starting Galleon TiVo HME server"
> cd /usr/local/galleon/bin; ./run.sh &
> ;;
> stop)
> echo "Stopping Galleon TiVo server"
> pkill -f galleon
> ;;
> *)
> echo "Usage: /etc/init.d/galleon {start|stop}"
> exit 1
> ;;
> esac


Yup, this is the script. I realized that the version I was using had pkill -f Galleon, with a capital G, which was messing it up. I've now fixed it. I did have it running at 99, and it still didn't load properly, but that's a different problem. Thanks for the help!


----------



## smoothtivo

crumley said:


> smoothtivo, it looks like it may not be finding all of your galleon installation. Are you sure that you installed all of galleon, and that you are running run.sh from the galleon directory?


I am running it from the unzipped files\folder (in the bin directory) i got from sourceforge. Do they have to be somewhere when i run them?

-Wes


----------



## crumley

If you didn't move them outside of the galleon directory structure, than that not the problem. By which I mean if you are running from inside GALLEON_TOP_DIR/bin, as opposed to /usr/local/bin, for example, you should be fine.

By the way, have you tried gui.sh? Does it give the same error?


----------



## smoothtivo

im running it from my home folder is that not going to work? Insid e the galleon directory.


----------



## smoothtivo

Here is what I get when I run gui.sh (same errors as run.sh):
[[email protected] bin]$ pwd
/galleon-1.9.0/bin
[[email protected] bin]$ ./gui.sh
Exception in thread "main" java.lang.ExceptionInInitializerError
at java.lang.Class.initializeClass() (/usr/lib/libgcj.so.6.0.0)
at java.lang.Class.forName(java.lang.String, boolean, java.lang.ClassLoader) (/usr/lib/libgcj.so.6.0.0)
at gnu.java.lang.MainThread.run() (/usr/lib/libgcj.so.6.0.0)
Caused by: java.lang.NullPointerException
at java.awt.Window.Window(java.awt.Frame) (/usr/lib/libgcj.so.6.0.0)
at javax.swing.JWindow.JWindow(java.awt.Frame) (/usr/lib/libgcj.so.6.0.0)
at org.lnicholls.galleon.gui.Galleon$SplashWindow.Galleon$SplashWindow() (Unknown Source)
at org.lnicholls.galleon.gui.Galleon.<clinit>() (Unknown Source)
at java.lang.Class.initializeClass() (/usr/lib/libgcj.so.6.0.0)
...2 more


----------



## jlgandy

What are you using for java? If you're not sure take a look at JAVA_HOME. I'm using the rpm's provided by Sun, so mine is JAVA_HOME=/usr/java/jdk1.5.0_05.

Just a guess, but from your output it looks like GCJ... I think Galleon may need Sun's v.1.5 - please correct me if I'm wrong though.

Edit:

http://galleon.sourceforge.net/html/faq.html

Looks like Sun > 1.4.2 is required.


----------



## azitnay

I've definitely never had any luck getting Galleon to run under GCJ.

Drew


----------



## crumley

Up near the top of this thread you say that you set:
JAVA_HOME=/usr/java/jre1.5.0_05

Do you actually have Sun's java installed at that location ?


----------



## smoothtivo

Yes the correct version of sun java is in that folder


----------



## smoothtivo

What does this mean:
" * The Java JRE bin directory must be in you system PATH environment variable."


----------



## azitnay

It just means java has to be in your path.

If you simply type:

java

at the command prompt, does it print "java: command not found", or a bunch of output on how to use java?

Drew


----------



## smoothtivo

prints this:
[[email protected] ~]$ java
Usage: gij [OPTION] ... CLASS [ARGS] ...
to invoke CLASS.main, or
gij -jar [OPTION] ... JARFILE [ARGS] ...
to execute a jar file
Try `gij --help' for more information.


----------



## windracer

smoothtivo said:


> prints this:
> [[email protected] ~]$ java
> Usage: gij [OPTION] ... CLASS [ARGS] ...
> to invoke CLASS.main, or
> gij -jar [OPTION] ... JARFILE [ARGS] ...
> to execute a jar file
> Try `gij --help' for more information.


Looks like the GNU Interpreter for Java (gij) is getting in the way. Check your PATH variable and make sure the location of your Sun Java install comes before wherever the GJC stuff is (I've never used GJC, so I apologize for not being more specific).


----------



## Malibyte

Just installed Galleon 1.9.0 for Linux on my server. It's an AMD64 running Debian-sid for amd64, and I have the AMD64-bit Java runtime 1.5.0_05 installed.

I modified the paths in wrapper.conf to suit my server, added JAVA_HOME=/usr/java/jre1.5.0_05 to run.sh and gui.sh, then ran run.sh...it set everything up (it appeared to, anyway) - gave me "Galleon is ready".

I then ran gui.sh - it came up fine, let me add apps, etc.

Tried to access it from the TiVo. The TiVo can't find the server ("no servers found at 192.168.1.1").

I can ping the TiVo from the server, and my firewall allows everything to/from the TiVo, so I don't think it's a network issue (also ran the network connectivity test from the TiVo - no problems).

Any ideas?

Thanks - Bob


----------



## Malibyte

Tried disabling ipv6...didn't matter.

[[email protected]: ~]$ netstat -anp | grep 2190
tcp 0 0 192.168.1.1:2190 0.0.0.0:* LISTEN 6576/java 
udp 0 0 0.0.0.0:2190 0.0.0.0:* 6576/java

The server appears to be listening.....


----------



## Malibyte

I know this is ugly, but here's the whole set of log entries for this session:



Code:


23:58:31,158  INFO [main] Server - http.agent=Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
23:58:31,162  INFO [main] Server - java.runtime.name=Java(TM) 2 Runtime Environment, Standard Edition
23:58:31,162  INFO [main] Server - sun.boot.library.path=/usr/java/jre1.5.0_05/lib/amd64
23:58:31,162  INFO [main] Server - java.vm.version=1.5.0_05-b05
23:58:31,162  INFO [main] Server - apps=/srv/galleon/bin/./../apps
23:58:31,162  INFO [main] Server - os.user.home=/root
23:58:31,162  INFO [main] Server - java.vm.vendor=Sun Microsystems Inc.
23:58:31,162  INFO [main] Server - java.vendor.url=http://java.sun.com/
23:58:31,162  INFO [main] Server - path.separator=:
23:58:31,162  INFO [main] Server - java.vm.name=Java HotSpot(TM) 64-Bit Server VM
23:58:31,169  INFO [main] Server - file.encoding.pkg=sun.io
23:58:31,169  INFO [main] Server - user.country=US
23:58:31,169  INFO [main] Server - sun.os.patch.level=unknown
23:58:31,169  INFO [main] Server - skins=/srv/galleon/bin/./../skins
23:58:31,169  INFO [main] Server - java.vm.specification.name=Java Virtual Machine Specification
23:58:31,169  INFO [main] Server - user.dir=/srv/galleon/bin
23:58:31,169  INFO [main] Server - java.runtime.version=1.5.0_05-b05
23:58:31,169  INFO [main] Server - bin=/srv/galleon/bin/./../bin
23:58:31,170  INFO [main] Server - java.awt.graphicsenv=sun.awt.X11GraphicsEnvironment
23:58:31,170  INFO [main] Server - cache=/srv/galleon/bin/./../data
23:58:31,170  INFO [main] Server - java.endorsed.dirs=/usr/java/jre1.5.0_05/lib/endorsed
23:58:31,170  INFO [main] Server - os.arch=amd64
23:58:31,170  INFO [main] Server - java.io.tmpdir=/tmp
23:58:31,170  INFO [main] Server - line.separator=

23:58:31,170  INFO [main] Server - java.vm.specification.vendor=Sun Microsystems Inc.
23:58:31,170  INFO [main] Server - hme=/srv/galleon/bin/./../hme
23:58:31,176  INFO [main] Server - java.awt.fonts=/usr/java/jre1.5.0_05/lib/fonts
23:58:31,177  INFO [main] Server - os.name=Linux
23:58:31,177  INFO [main] Server - sun.jnu.encoding=ANSI_X3.4-1968
23:58:31,177  INFO [main] Server - java.library.path=/usr/java/jre1.5.0_05/lib/amd64/server:/usr/java/jre1.5.0_05/lib/amd64:/usr/java/jre1.5.0_05/../lib/amd$
23:58:31,177  INFO [main] Server - java.specification.name=Java Platform API Specification
23:58:31,177  INFO [main] Server - java.class.version=49.0
23:58:31,177  INFO [main] Server - root=/srv/galleon/bin/./..
23:58:31,177  INFO [main] Server - sun.management.compiler=HotSpot 64-Bit Server Compiler
23:58:31,177  INFO [main] Server - os.version=2.6.11-9-amd64-k8
23:58:31,177  INFO [main] Server - user.home=/srv/galleon/bin/./..
23:58:31,177  INFO [main] Server - user.timezone=US/Pacific
23:58:31,177  INFO [main] Server - java.awt.printerjob=sun.print.PSPrinterJob
23:58:31,177  INFO [main] Server - java.specification.version=1.5
23:58:31,177  INFO [main] Server - file.encoding=ANSI_X3.4-1968
23:58:31,177  INFO [main] Server - user.name=root
23:58:31,177  INFO [main] Server - java.class.path=../conf:../lib/MHS.jar:../lib/activation.jar:../lib/bananas.jar:../lib/browserlauncher.jar:../lib/commons$
23:58:31,178  INFO [main] Server - logs=/srv/galleon/bin/./../logs
23:58:31,178  INFO [main] Server - java.vm.specification.version=1.0
23:58:31,178  INFO [main] Server - sun.arch.data.model=64
23:58:31,178  INFO [main] Server - java.home=/usr/java/jre1.5.0_05
23:58:31,178  INFO [main] Server - java.specification.vendor=Sun Microsystems Inc.
23:58:31,178  INFO [main] Server - user.language=en
23:58:31,178  INFO [main] Server - awt.toolkit=com.eteks.awt.PJAToolkit
23:58:31,178  INFO [main] Server - java.vm.info=mixed mode
23:58:31,178  INFO [main] Server - java.version=1.5.0_05
23:58:31,178  INFO [main] Server - java.ext.dirs=/usr/java/jre1.5.0_05/lib/ext
23:58:31,178  INFO [main] Server - sun.boot.class.path=/usr/java/jre1.5.0_05/lib/rt.jar:/usr/java/jre1.5.0_05/lib/i18n.jar:/usr/java/jre1.5.0_05/lib/sunrsas$
23:58:31,178  INFO [main] Server - conf=/srv/galleon/bin/./../conf
23:58:31,178  INFO [main] Server - java.vendor=Sun Microsystems Inc.
23:58:31,178  INFO [main] Server - file.separator=/
23:58:31,178  INFO [main] Server - java.vendor.url.bug=http://java.sun.com/cgi-bin/bugreport.cgi
23:58:31,178  INFO [main] Server - sun.cpu.endian=little
23:58:31,179  INFO [main] Server - sun.io.unicode.encoding=UnicodeLittle
23:58:31,179  INFO [main] Server - data=/srv/galleon/bin/./../data
23:58:31,179  INFO [main] Server - sun.cpu.isalist=
23:58:31,179  INFO [main] Server - Galleon Version=1.9.0
23:58:31,180  INFO [main] Server - Local IP=192.168.1.1
23:58:31,181  INFO [main] Server - Host=kenobi.malibyte.net
23:58:31,181  INFO [main] Tools - Max Memory: 64880640
23:58:31,181  INFO [main] Tools - Total Memory: 64880640
23:58:31,181  INFO [main] Tools - Free Memory: 53002056
23:58:31,251  INFO [main] NetworkServerManager - Creating Database Network Server
23:58:38,141  INFO [main] NetworkServerManager - Created Database Network Server
23:58:38,145  INFO [main] HibernateUtil - Initializing Hibernate
23:58:38,203  INFO [main] Environment - Hibernate 2.1.7
23:58:38,204  INFO [main] Environment - loaded properties from resource hibernate.properties: {hibernate.connection.password=, hibernate.query.substitutions$
23:58:38,206  INFO [main] Environment - using CGLIB reflection optimizer
23:58:38,206  INFO [main] Environment - using JDK 1.4 java.sql.Timestamp handling
23:58:38,283  INFO [main] Configuration - Mapping resource: org/lnicholls/galleon/database/Version.hbm.xml
23:58:38,605  INFO [main] Binder - Mapping class: org.lnicholls.galleon.database.Version -> VERSION
23:58:38,665  INFO [main] Configuration - Mapping resource: org/lnicholls/galleon/database/Audio.hbm.xml
23:58:38,859  INFO [main] Binder - Mapping class: org.lnicholls.galleon.database.Audio -> AUDIO
23:58:38,873  INFO [main] Configuration - Mapping resource: org/lnicholls/galleon/database/Image.hbm.xml
23:58:38,967  INFO [main] Binder - Mapping class: org.lnicholls.galleon.database.Image -> IMAGE
23:58:38,971  INFO [main] Configuration - Mapping resource: org/lnicholls/galleon/database/Video.hbm.xml
23:58:39,109  INFO [main] Binder - Mapping class: org.lnicholls.galleon.database.Video -> VIDEO
23:58:39,131  INFO [main] Configuration - Mapping resource: org/lnicholls/galleon/database/Thumbnail.hbm.xml
23:58:39,183  INFO [main] Binder - Mapping class: org.lnicholls.galleon.database.Thumbnail -> THUMBNAIL
23:58:39,192  INFO [main] Configuration - Mapping resource: org/lnicholls/galleon/database/PersistentValue.hbm.xml
23:58:39,588  INFO [main] Binder - Mapping class: org.lnicholls.galleon.database.PersistentValue -> PERSISTENTVALUE
23:58:39,590  INFO [main] Configuration - Mapping resource: org/lnicholls/galleon/database/Podcast.hbm.xml
23:58:39,768  INFO [main] Binder - Mapping class: org.lnicholls.galleon.database.Podcast -> PODCAST
23:58:39,771  INFO [main] Binder - Mapping collection: org.lnicholls.galleon.database.Podcast.tracks -> PODCAST_TRACKS
23:58:39,777  INFO [main] Configuration - Mapping resource: org/lnicholls/galleon/database/Movie.hbm.xml
23:58:39,908  INFO [main] Binder - Mapping class: org.lnicholls.galleon.database.Movie -> MOVIE
23:58:39,911  INFO [main] Configuration - Mapping resource: org/lnicholls/galleon/database/Theater.hbm.xml
23:58:39,935  INFO [main] Binder - Mapping class: org.lnicholls.galleon.database.Theater -> THEATER
23:58:39,935  INFO [main] Binder - Mapping collection: org.lnicholls.galleon.database.Theater.showtimes -> THEATER_SHOWTIMES
23:58:39,939  INFO [main] Configuration - Mapping resource: org/lnicholls/galleon/database/Application.hbm.xml
23:58:39,986  INFO [main] Binder - Mapping class: org.lnicholls.galleon.database.Application -> APPLICATION
23:58:39,988  INFO [main] Configuration - Mapping resource: org/lnicholls/galleon/database/Videocast.hbm.xml
23:58:40,010  INFO [main] Binder - Mapping class: org.lnicholls.galleon.database.Videocast -> VIDEOCAST
23:58:40,011  INFO [main] Binder - Mapping collection: org.lnicholls.galleon.database.Videocast.tracks -> VIDEOCAST_TRACKS
23:58:40,035  INFO [main] Configuration - Mapping resource: org/lnicholls/galleon/database/Playlists.hbm.xml
23:58:40,052  INFO [main] Binder - Mapping class: org.lnicholls.galleon.database.Playlists -> PLAYLISTS
23:58:40,054  INFO [main] Configuration - Mapping resource: org/lnicholls/galleon/database/PlaylistsTracks.hbm.xml
23:58:40,232  INFO [main] Binder - Mapping class: org.lnicholls.galleon.database.PlaylistsTracks -> PLAYLISTS_TRACKS
23:58:40,232  INFO [main] Configuration - processing one-to-many association mappings
23:58:40,524  INFO [main] Configuration - processing one-to-one association property references
23:58:40,524  INFO [main] Configuration - processing foreign key constraints
23:58:40,659  INFO [main] Dialect - Using dialect: net.sf.hibernate.dialect.DerbyDialect
23:58:40,666  INFO [main] SettingsFactory - Use outer join fetching: true
23:58:40,671  INFO [main] DBCPConnectionProvider - DBCP using driver: org.apache.derby.jdbc.EmbeddedDriver at URL: jdbc:derby:galleon;user=galleon;password=$
23:58:40,671  INFO [main] DBCPConnectionProvider - Connection properties: {user=, password=}
23:58:40,678  INFO [main] DBCPConnectionProvider - DBCP prepared statement pooling enabled
23:58:40,689  INFO [main] TransactionManagerLookupFactory - No TransactionManagerLookup configured (in JTA environment, use of process level read-write cach$
23:58:40,714  INFO [main] SettingsFactory - Use scrollable result sets: true
23:58:40,714  INFO [main] SettingsFactory - Use JDBC3 getGeneratedKeys(): true
23:58:40,715  INFO [main] SettingsFactory - Optimize cache for minimal puts: false
23:58:40,715  INFO [main] SettingsFactory - Query language substitutions: {true=1, false=0}
23:58:40,715  INFO [main] SettingsFactory - cache provider: net.sf.hibernate.cache.EhCacheProvider
23:58:40,716  INFO [main] SettingsFactory - query cache factory: net.sf.hibernate.cache.StandardQueryCacheFactory
23:58:40,718  INFO [main] Configuration - instantiating and configuring caches
23:58:40,789  WARN [main] EhCache - Could not find configuration for org.lnicholls.galleon.database.Application. Configuring using the defaultCache settings.
23:58:40,808  INFO [main] SessionFactoryImpl - building session factory
23:58:42,963  INFO [main] SessionFactoryObjectFactory - Not binding factory to JNDI, no JNDI name configured
23:58:42,965  INFO [main] UpdateTimestampsCache - starting update timestamps cache at region: net.sf.hibernate.cache.UpdateTimestampsCache
23:58:42,965  WARN [main] EhCache - Could not find configuration for net.sf.hibernate.cache.UpdateTimestampsCache. Configuring using the defaultCache settin$
23:58:42,967  INFO [main] StandardQueryCache - starting query cache at region: net.sf.hibernate.cache.StandardQueryCache
23:58:42,967  WARN [main] EhCache - Could not find configuration for net.sf.hibernate.cache.StandardQueryCache. Configuring using the defaultCache settings.
23:58:42,968  INFO [main] HibernateUtil - Initialized Hibernate
23:58:55,620  INFO [main] ShoutcastStations - Exceeded daily search limit for Shoutcast.com
-> 23:58:55,902 ERROR [main] TiVoListener - java.io.IOException: Operation not permitted
-> 23:58:56,000 ERROR [main] AppFactory - java.io.IOException: Operation not permitted
23:58:56,373 ERROR [Thread-15] Tools - Image Error
23:58:56,373 ERROR [Thread-14] Tools - Invalid internet image: /gallery
23:58:56,415  INFO [main] BroadcastThread - High frequency enabled
23:58:56,416  INFO [main] Server - Broadcast port=2190
23:59:06,690  INFO [ListenThread] BroadcastThread - High frequency enabled
23:59:30,044  INFO [ListenThread] BroadcastThread - High frequency enabled
00:00:56,456 ERROR [Thread-25] Tools - EDU.oswego.cs.dl.util.concurrent.TimeoutException: http://www.malibyte.net/gallery
00:00:56,456 ERROR [Thread-26] Tools - java.lang.InterruptedException
00:03:57,056 ERROR [Thread-30] Tools - Image Error
00:03:57,056 ERROR [Thread-29] Tools - Invalid internet image: /gallery

OK, there are some errors near the end of this dump. A few have to deal with one of the URLs I gave it in the app configuration; that shouldn't be the issue.

Any thoughts on the two I have marked with "->" ??

TIA
Bob


----------



## smoothtivo

windracer said:


> Looks like the GNU Interpreter for Java (gij) is getting in the way. Check your PATH variable and make sure the location of your Sun Java install comes before wherever the GJC stuff is (I've never used GJC, so I apologize for not being more specific).


How do I change that?

Thanks,


----------



## crumley

Well, the easiest way to get gjc out of the way would be to uninstall it. The way to do that depends on your distribution.


If don't want to do that, then you have to change the path. If your are using bash as your shell, you can do:

set | grep PATH 

to find your current path. Also, try 

set | grep JAVA

to see how your java is set up.


Then add the path to java to beginning of the path:

PATH=/usr/java/jre1.5.0_05:$PATH


----------



## smoothtivo

I tried running those commands but the same comes up when i type java
[[email protected] ~]$ java
Usage: gij [OPTION] ... CLASS [ARGS] ...
to invoke CLASS.main, or
gij -jar [OPTION] ... JARFILE [ARGS] ...
to execute a jar file
Try `gij --help' for more information.
[[email protected] ~]$


----------



## crumley

Post what you get from here.

set | grep PATH
and
set | grep JAVA

If your path is set the right way, it shouldn't be finding the wrong java.


----------



## smoothtivo

[[email protected] bin]$ pwd
/galleon-1.9.0/bin
[[email protected] bin]$ set | grep PATH
PATH=/usr/kerberos/bin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/home/wes/bin
[[email protected] bin]$ set | grep JAVA
[[email protected] bin]$ java
Usage: gij [OPTION] ... CLASS [ARGS] ...
to invoke CLASS.main, or
gij -jar [OPTION] ... JARFILE [ARGS] ...
to execute a jar file
Try `gij --help' for more information.
[[email protected] bin]$


----------



## azitnay

Try:

which java

Also try:

ls -lad `which java`

(note those are backticks).

Drew


----------



## smoothtivo

[[email protected] ~]$ which java
/usr/bin/java
[[email protected] ~]$ ls -lad `which java`
lrwxrwxrwx 1 root root 22 Nov 11 13:37 /usr/bin/java -> /etc/alternatives/java
[[email protected] ~]$


----------



## azitnay

Yeah, that's definitely pointing at gij.

First, verify that Sun java exists where it should be:

ls -la /usr/java/jre1.5.0_05/bin/java

If it's there, remove your symbolic link and create one to Sun's java with the following two commands:

rm -f /usr/bin/java
ln -s /usr/java/jre1.5.0_05/bin/java /usr/bin/java

Drew


----------



## smoothtivo

That did it!!! Fired right up and works great. Work a lot faster than it did in Windows too. This was one of my hold backs from switching all to linux. goodbye windows.

Thanks guys,
smooth


----------



## windracer

Malibyte said:


> Tried disabling ipv6...didn't matter.


How did you disable it? Most of us have had to add:



Code:


alias net-pf-10 off

to modprobe.conf.


----------



## Malibyte

windracer said:


> How did you disable it? Most of us have had to add:
> 
> 
> 
> Code:
> 
> 
> alias net-pf-10 off
> 
> to modprobe.conf.


Tried that; the ipv6 module still loaded up. I Googled this and found another solution: after I renamed the module (ipv6.ko) to something else, it no longer loads (obviously).

Thanks - Bob


----------



## smoothtivo

crumley said:


> #!/bin/sh
> case "$1" in
> start)
> echo "Starting Galleon TiVo HME server"
> cd /usr/local/galleon/bin; ./run.sh &
> ;;
> stop)
> echo "Stopping Galleon TiVo server"
> pkill -f galleon
> ;;
> *)
> echo "Usage: /etc/init.d/galleon {start|stop}"
> exit 1
> ;;
> esac


So if I add a file named say "galleon" to the etc/init.d with this in it, then galleon will start automatically as a service?


----------



## Malibyte

Yeah...that little init script works. Since Galleon takes a while to finish loading, you'll see the "Galleon is ready" line after the login: prompt. No worries.

Depending on which distro you're running, you'll need to add symlinks in the /etc/rc.x/ or /etc/rcX.d/ directories to start/stop the script.

Bob


----------



## azitnay

You can suppress that annoying little "Galleon is ready" line by changing line 5 of your script to:

cd /usr/local/galleon/bin; ./run.sh > /dev/null &

Drew


----------



## Malibyte

Can anyone give me a clue as to why my TiVo can't find the Galleon server, from the log I posted? Any help would be appreciated. I'm sure it's something simple/obvious...it usually is.  I just don't see it at the moment.


----------



## azitnay

That TiVoListener error must have something to do with it.

You're definitely running Galleon as root, right?

Drew


----------



## smoothtivo

Malibyte said:


> Depending on which distro you're running, you'll need to add symlinks in the /etc/rc.x/ or /etc/rcX.d/ directories to start/stop the script.
> 
> Bob


Sorry still a little new. How would I do that?

Thanks again,
smooth


----------



## Malibyte

azitnay said:


> That TiVoListener error must have something to do with it.
> 
> You're definitely running Galleon as root, right?
> 
> Drew


Yes, it's running as root.

Here's a dump after restarting Galleon and rebooting the TiVo:



Code:


[[email protected]: ~]$ /etc/init.d/galleon start
Starting Galleon TiVo HME server:
[[email protected]: ~]$ Galleon 1.9.0 is starting...
Galleon is ready.
tail -f /srv/galleon/logs/log.txt
11:12:38,042  INFO [main] StandardQueryCache - starting query cache at region: net.sf.hibernate.cache.StandardQueryCache
11:12:38,042  WARN [main] EhCache - Could not find configuration for net.sf.hibernate.cache.StandardQueryCache. Configuring using the defaultCache settings.
11:12:38,042  INFO [main] HibernateUtil - Initialized Hibernate
11:12:53,397  INFO [main] ShoutcastStations - Exceeded daily search limit for Shoutcast.com
11:12:53,577 ERROR [main] TiVoListener - java.io.IOException: Operation not permitted
11:12:53,645 ERROR [main] AppFactory - java.io.IOException: Operation not permitted
11:12:53,776  INFO [main] BroadcastThread - High frequency enabled
11:12:53,778  INFO [main] Server - Broadcast port=2190
11:12:58,824  INFO [ListenThread] BroadcastThread - High frequency enabled
11:13:38,296  INFO [ListenThread] BroadcastThread - High frequency enabled
11:25:49,665  INFO [ConnectionThread] ConnectionThread - New connection accepted /192.168.1.11:1026

Still getting the error message, but it did apparently get *something* from the TiVo.


Edit: Tried it with 1.9.1 also. No difference. 

Bob


----------



## Malibyte

smoothtivo said:


> Sorry still a little new. How would I do that?
> 
> Thanks again,
> smooth


Which Linux distribution are you running?


----------



## smoothtivo

Malibyte said:


> Which Linux distribution are you running?


Fedora Core 4


----------



## azitnay

chkconfig is the easiest way. Add the following two lines to the top of /etc/rc.d/init.d/galleon, right after the #!/bin/sh line:

# chkconfig: 345 99 01 
# description: Galleon is a TiVo HME server.

Then, run chkconfig --add galleon

Note that this makes galleon start by default on runlevels 3, 4, and 5 (3 is usually normal operation). It should be fine, but to change this, you can change the 345 above.

Drew


----------



## azitnay

Malibyte said:


> Yes, it's running as root.
> 
> Here's a dump after restarting Galleon and rebooting the TiVo:
> 
> Still getting the error message, but it did apparently get *something* from the TiVo.
> 
> 
> Edit: Tried it with 1.9.1 also. No difference.
> 
> Bob


I'm a bit stumped... Perhaps Leon knows more, but I doubt he follows this thread since it's about Linux. Maybe you should repost that code snippet in one of the other threads.

Drew


----------



## javahmo

Malibyte said:


> Yes, it's running as root.
> 
> Here's a dump after restarting Galleon and rebooting the TiVo:
> 
> 
> 
> Code:
> 
> 
> [[email protected]: ~]$ /etc/init.d/galleon start
> Starting Galleon TiVo HME server:
> [[email protected]: ~]$ Galleon 1.9.0 is starting...
> Galleon is ready.
> tail -f /srv/galleon/logs/log.txt
> 11:12:38,042  INFO [main] StandardQueryCache - starting query cache at region: net.sf.hibernate.cache.StandardQueryCache
> 11:12:38,042  WARN [main] EhCache - Could not find configuration for net.sf.hibernate.cache.StandardQueryCache. Configuring using the defaultCache settings.
> 11:12:38,042  INFO [main] HibernateUtil - Initialized Hibernate
> 11:12:53,397  INFO [main] ShoutcastStations - Exceeded daily search limit for Shoutcast.com
> 11:12:53,577 ERROR [main] TiVoListener - java.io.IOException: Operation not permitted
> 11:12:53,645 ERROR [main] AppFactory - java.io.IOException: Operation not permitted
> 11:12:53,776  INFO [main] BroadcastThread - High frequency enabled
> 11:12:53,778  INFO [main] Server - Broadcast port=2190
> 11:12:58,824  INFO [ListenThread] BroadcastThread - High frequency enabled
> 11:13:38,296  INFO [ListenThread] BroadcastThread - High frequency enabled
> 11:25:49,665  INFO [ConnectionThread] ConnectionThread - New connection accepted /192.168.1.11:1026
> 
> Still getting the error message, but it did apparently get *something* from the TiVo.
> 
> 
> Edit: Tried it with 1.9.1 also. No difference.
> 
> Bob


Enable debug logging using the Galleon configuration GUI and email me all of your logs.


----------



## Malibyte

javahmo said:


> Enable debug logging using the Galleon configuration GUI and email me all of your logs.


Sent...thanks!


----------



## jstaffon

Sorry to jump into the middle of this post but I'm having similar problems as some of you. I'm trying to run version 1.9.2 on Mandriva LE 2005. My TiVo is a Toshiba SD-H400. I don't get any error messages in the log files and I can see my server entry in the screen that lists all my recorded shows. If I select the server entry I can see and transfer files from my linux server to my Tivo. If I start the gui.sh on my linux server, I can see my Tivo unit and the recorded shows. What doesn't work is the following: None of the apps that I've added via gui.sh show up in the "Music, Photos, and More" area. I've successfully run Galleon on a Windows box without any problems. I must be missing something easy. I've done most of the suggestions above such as making sure java pointed to the right place and making sure the /etc/hosts file has the entry and ip for my server. I'm hoping since most of the installation on my Linux box works, except for all the apps, that it would be something obvious.
Thanks in advance.
Jeff.


----------



## azitnay

Is IPv6 definitely disabled?

Drew


----------



## jstaffon

Nope.....I will try that. I thought I read in one of the posts that IPv6 didn't need to be disabled....or maybe I read someone had Galleon running without disabling it. I'll go back and try that.

Thanks for the reminder.
Jeff.


----------



## azitnay

Well, it says right in the Linux installation instructions on http://galleon.sourceforge.net/html/install.html to disable it.

I've never even tried running Galleon with IPv6 enabled, but I remember from the early days of HME that I couldn't get any HME apps running on Linux until I disabled IPv6.

Drew


----------



## jstaffon

I disabled it and everything works fine....thanks man! Sometimes you have to hit someone with a brick to get them to see the light! I'll bet I read the instructions a dozen times.

Thanks again! Jeff.

BTW, what functions will I lose by not having ipv6 running? Not sure I know what it does.


----------



## azitnay

At the present time, pretty much nothing. IPv6 is the "future" of IP; it's the successor to the current IPv4 (dotted quad) style of IP address. It's meant to deal with the inevitable shortage of IPv4 IP addresses, since there are only roughly 4 billion (2^32) available. IPv6 will give us 2^128 total IP addresses, which is something like 600 IP addresses per square millimeter of the Earth's surface.

Unfortunately, though, IPv6 seems to cause problems with HME. I forget exactly what the problem is; something pertaining to multicasting. Regardless, IPv4 should be supported for another couple decades or so.

Drew


----------



## jstaffon

Ah yes....I should have known that. Brain cramp......

Thanks again. Hope your holiday was enjoyable.

Jeff.


----------



## crumley

The issue with ipv6 comes up often. Personally, I have never had a problem with ipv6 and Galleon, but it seems like a lot of people do.


----------



## dachtler

I'm getting the following messages on my FC4 server running Galleon 1.9.2:

Internet[#1,uri=null] warning: resource 2066 not found.
Internet[#1,uri=null] warning: resource 2066 not found.
Weather[#1,uri=null] warning: resource 2062 not found.
Weather[#1,uri=null] warning: resource 2062 not found.
Traffic[#1,uri=null] warning: resource 2062 not found.
Traffic[#1,uri=null] warning: resource 2062 not found.
Internet[#1,uri=null] warning: resource 2066 not found.
Internet[#1,uri=null] warning: resource 2066 not found.
java.lang.Exception: missed flush
at com.tivo.hme.sdk.Application.writeTerminator(Application.java:1463)
at com.tivo.hme.sdk.Application.cmdViewSetPainting(Application.java:1055)
at com.tivo.hme.sdk.View.setPainting(View.java:526)
at org.lnicholls.galleon.apps.internet.Internet$ImageScreen.updateView(Internet.java:400)
at org.lnicholls.galleon.apps.internet.Internet$ImageScreen.access$800(Internet.java:374)
at org.lnicholls.galleon.apps.internet.Internet$4.run(Internet.java:420)

The apps seem to be working fine that are generating the error messages. Anything I should be concerned about? Any idea how to fix these?


----------



## javahmo

dachtler said:


> I'm getting the following messages on my FC4 server running Galleon 1.9.2:
> 
> Internet[#1,uri=null] warning: resource 2066 not found.
> Internet[#1,uri=null] warning: resource 2066 not found.
> Weather[#1,uri=null] warning: resource 2062 not found.
> Weather[#1,uri=null] warning: resource 2062 not found.
> Traffic[#1,uri=null] warning: resource 2062 not found.
> Traffic[#1,uri=null] warning: resource 2062 not found.
> Internet[#1,uri=null] warning: resource 2066 not found.
> Internet[#1,uri=null] warning: resource 2066 not found.
> java.lang.Exception: missed flush
> at com.tivo.hme.sdk.Application.writeTerminator(Application.java:1463)
> at com.tivo.hme.sdk.Application.cmdViewSetPainting(Application.java:1055)
> at com.tivo.hme.sdk.View.setPainting(View.java:526)
> at org.lnicholls.galleon.apps.internet.Internet$ImageScreen.updateView(Internet.java:400)
> at org.lnicholls.galleon.apps.internet.Internet$ImageScreen.access$800(Internet.java:374)
> at org.lnicholls.galleon.apps.internet.Internet$4.run(Internet.java:420)
> 
> The apps seem to be working fine that are generating the error messages. Anything I should be concerned about? Any idea how to fix these?


The "resource not found" and "missed flush" warning messages are generated by the TiVo HME SDK. These can be ignored as they relate to various timing issues which are not critical to the HME apps.


----------



## juanian

To find out what java directory is being used, enter the command "type java". You should see something like "java is /usr/bin/java".

EDIT - sorry - I posted this when I got to the end of page 1 (not realizing that there was another page of posts!)


----------



## Malibyte

OK, I'm still torturing myself trying to get this installed. Updated to 1.9.2. IPv6 is disabled. JAVA_HOME is defined. Version 1.5.0_05 of the JRE is installed. The firewall permits everything between machines on the internal network (192.168.1.x; the server is .1 and the TiVo is .11).

I'm still getting this in the logs (this is on initial startup right afte the upgrade):

<snip>
17:37:04,239 ERROR [main] TiVoListener - java.io.IOException: Operation not permitted
17:37:04,239 DEBUG [main] TiVoListener - java.io.IOException: Operation not permitted
at java.net.PlainDatagramSocketImpl.send(Native Method)
at java.net.DatagramSocket.send(Unknown Source)
at javax.jmdns.JmDNS.send(Unknown Source)
at javax.jmdns.JmDNS.init(Unknown Source)
at javax.jmdns.JmDNS.<init>(Unknown Source)
at org.lnicholls.galleon.server.TiVoListener.<init>(TiVoListener.java:57)
at org.lnicholls.galleon.server.Server.start(Server.java:266)
at org.lnicholls.galleon.server.Server.getServer(Server.java:611)
at org.lnicholls.galleon.server.Server.main(Server.java:1169)

17:37:04,252 ERROR [main] AppFactory - java.io.IOException: Operation not permitted
17:37:04,253 DEBUG [main] AppFactory - java.io.IOException: Operation not permitted
at java.net.PlainDatagramSocketImpl.send(Native Method)
at java.net.DatagramSocket.send(Unknown Source)
at javax.jmdns.JmDNS.send(Unknown Source)
at javax.jmdns.JmDNS.init(Unknown Source)
at javax.jmdns.JmDNS.<init>(Unknown Source)
at org.lnicholls.galleon.app.AppHost.listen(AppHost.java:201)
at org.lnicholls.galleon.app.AppManager.loadApps(AppManager.java:80)
at org.lnicholls.galleon.server.Server.start(Server.java:268)
at org.lnicholls.galleon.server.Server.getServer(Server.java:611)
at org.lnicholls.galleon.server.Server.main(Server.java:1169)
<snip>

Everything else seems OK, I don't get any other errors. I see weather reports in the logs. But the TiVo can't see the server at all.

Could somebody please decipher these error messages for me? I'm quite confident with Linux and shell scripting, but I don't know s**t about Java. I would guess it's some sort of permission problem, but the Galleon server is running as root.

For what it's worth, the old JavaHMO server for the most part worked with this same setup (I could play MP3 files and look at .jpg pix (on the server) on the TiVo, but I couldn't get movie listings, weather reports, etc. (just got the big red "X")).

Thanks...Bob


----------



## juanian

Malibyte said:


> <snip>
> 17:37:04,239 ERROR [main] TiVoListener - java.io.IOException: Operation not permitted
> 17:37:04,239 DEBUG [main] TiVoListener - java.io.IOException: Operation not permitted


One stab in the dark -- do you have "Allow Transfers" enabled on your TiVo, and have you named your TiVo? (Check your System Information page - the TiVoToGo entry shows "a,a,a", right?)

Do you have other TiVos, and do they see each other if you do?

One note: the "TiVoListener" part of the log is where Galleon detects my TiVos on my Mac.

Try this: When you run the GUI, go to File/Properties, double-check your Media Access Key, be sure that your Linux IP address is set right (or try 'Default') and then click on "Test" -- does your TiVo name show up in the box? (What choices show for the IP address in the dropdown?)

I'm also slightly puzzled by you saying your "server" was .1; is this the Linux box you are using? Are you using a router, and what is *its* address (normally, the router is .1)?

Maybe someone else has more info than I have -- sorry.


----------



## azitnay

juanian said:


> I'm also slightly puzzled by you saying your "server" was .1; is this the Linux box you are using? Are you using a router, and what is *its* address (normally, the router is .1)?


A Linux box equipped with two ethernet cards can often function as a broadband router quite nicely.

Drew


----------



## javahmo

Malibyte said:


> OK, I'm still torturing myself trying to get this installed. Updated to 1.9.2. IPv6 is disabled. JAVA_HOME is defined. Version 1.5.0_05 of the JRE is installed. The firewall permits everything between machines on the internal network (192.168.1.x; the server is .1 and the TiVo is .11).
> 
> I'm still getting this in the logs (this is on initial startup right afte the upgrade):
> 
> <snip>
> 17:37:04,239 ERROR [main] TiVoListener - java.io.IOException: Operation not permitted
> 17:37:04,239 DEBUG [main] TiVoListener - java.io.IOException: Operation not permitted
> at java.net.PlainDatagramSocketImpl.send(Native Method)
> at java.net.DatagramSocket.send(Unknown Source)
> at javax.jmdns.JmDNS.send(Unknown Source)
> at javax.jmdns.JmDNS.init(Unknown Source)
> at javax.jmdns.JmDNS.<init>(Unknown Source)
> at org.lnicholls.galleon.server.TiVoListener.<init>(TiVoListener.java:57)
> at org.lnicholls.galleon.server.Server.start(Server.java:266)
> at org.lnicholls.galleon.server.Server.getServer(Server.java:611)
> at org.lnicholls.galleon.server.Server.main(Server.java:1169)
> 
> 17:37:04,252 ERROR [main] AppFactory - java.io.IOException: Operation not permitted
> 17:37:04,253 DEBUG [main] AppFactory - java.io.IOException: Operation not permitted
> at java.net.PlainDatagramSocketImpl.send(Native Method)
> at java.net.DatagramSocket.send(Unknown Source)
> at javax.jmdns.JmDNS.send(Unknown Source)
> at javax.jmdns.JmDNS.init(Unknown Source)
> at javax.jmdns.JmDNS.<init>(Unknown Source)
> at org.lnicholls.galleon.app.AppHost.listen(AppHost.java:201)
> at org.lnicholls.galleon.app.AppManager.loadApps(AppManager.java:80)
> at org.lnicholls.galleon.server.Server.start(Server.java:268)
> at org.lnicholls.galleon.server.Server.getServer(Server.java:611)
> at org.lnicholls.galleon.server.Server.main(Server.java:1169)
> <snip>
> 
> Everything else seems OK, I don't get any other errors. I see weather reports in the logs. But the TiVo can't see the server at all.
> 
> Could somebody please decipher these error messages for me? I'm quite confident with Linux and shell scripting, but I don't know s**t about Java. I would guess it's some sort of permission problem, but the Galleon server is running as root.
> 
> For what it's worth, the old JavaHMO server for the most part worked with this same setup (I could play MP3 files and look at .jpg pix (on the server) on the TiVo, but I couldn't get movie listings, weather reports, etc. (just got the big red "X")).
> 
> Thanks...Bob


Make sure that all the neccesary ports are available:
http://galleon.sourceforge.net/html/faq.html#ports


----------



## juanian

azitnay said:


> A Linux box equipped with two ethernet cards can often function as a broadband router quite nicely.
> 
> Drew


Ah -- good point, but what are the IP addresses of the two cards? A TiVo has some *annoying* code to make sure that anything doing MRV/ToGo is on the same subnet, and I wonder if the server and TiVo are seen as being in different subnets. Not being extremely network-savvy, I wonder if the Linux box can pass the Rendevous/Bonjour stuff through to keep the TiVo happy. (I expect that it can, but I don't know what may be needed (if anything) to do that.)

So Malibyte, try choosing different IP addresses in the Galleon IP Address dropdown, and especially try and pick one in the same subnet as the TiVo (plus check the ports Leon lists in the FAQ!).


----------



## azitnay

Indeed... A Linux box serving as a broadband router would typically have a public IP on one ethernet interface and a private IP like 192.168.1.1 on the other, and you'd have to make sure Galleon's set to use the 192.168.1.1 interface and not the public IP's interface.

Drew


----------



## cmarrin

I am trying to put together a script to allow Galleon to follow all the rules of Linux daemonhood. By this I mean something that has a "galleond" init script in /etc/init.d, so you can use 'galleond start' and 'galleond start'. I want this to show the nice startup and shutdown '[ OK ]" or "[FAILED]" messages as it loads and unloads. All this is easily done using /etc/init.d/functions, which has lots of helper scripts for all this. To boot, I want to be able to manage all this from Webmin. Webmin is a very cool way to manage daemons. You can use it to start/stop and set the daemon to start at boot time, all without having to go in and set runlevels and such. It also shows the status with its nice web interface. You can also add monitors, which will notify you if your server goes down, and even automatically restart it.

I have gotten pretty far, using scripts posted here. I modified run.sh like this:

------

#!/bin/bash
#
# Run the Galleon server
#
# You may have to set JAVA_HOME to the correct value for your system
JAVA_HOME=/usr/java/jre1.5.0_05/
OLDCLASSPATH=$CLASSPATH
CLASSPATH=/usr/local/galleon/conf
for j in /usr/local/galleon/lib/*.jar
do
CLASSPATH=$CLASSPATH:$j
done

OPTION=""
if [ -f "$JAVA_HOME/bin/server" ]; then
OPTION=-server
fi
cd /usr/local/galleon/bin;$JAVA_HOME/bin/java $OPTION -cp $CLASSPATH -Xms64m -Xm
x64m -Djava.awt.fonts="$JAVA_HOME/lib/fonts" -Dawt.toolkit=com.eteks.awt.PJATool
kit org.lnicholls.galleon.server.Server &
CLASSPATH=$OLDCLASSPATH

------

All I have done is to have the java app start in the background and setup the paths so you don't need any env vars setup and you don't need to cd to the galleon directory to run. This assumes that you have placed galleon at /usr/local/galleon, and that you Java is at /usr/java/jre1.5.0_05/. I really like the fact that this version has gotten rid of all the external requirements for running. But it certainly needs some cleanup to make it configurable. Next I am going to add a /etc/sysconfig/galleon config file, so all of these paths can be set there.

Then I added a /etc/init.d/galleond file that looks like this:

------

#! /bin/bash
#
# galleond Start/Stop the galleon daemon.
#
# chkconfig: 2345 90 60
# description: Galleon is a Tivo HME Server \
# For more information go to: \
# ... \
#
# processname: galleond
# config: /usr/local/galleon/conf/configure.xml
# pidfile: /var/run/galleond.pid

# Source function library.
. /etc/init.d/functions

# See how we were called.

prog="/usr/local/galleon/bin/run.sh"

start() {
echo -n $"Starting Galleon: "
daemon $prog
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/galleond
return $RETVAL
}

stop() {
echo -n $"Stopping Galleon: "
rm -f /var/lock/subsys/galleond
kill `pgrep -f galleon`
return $RETVAL
}

rhstatus() {
pid=`pgrep -f galleon`
if [ -n "$pid" ]; then
echo $"Galleon (pid $pid) is running..."
return 0
fi

}

restart() {
stop
start
}

reload() {
echo -n $"Reloading cron daemon configuration: "
killproc galleond -HUP
RETVAL=$?
echo
return $RETVAL
}

case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
reload)
reload
;;
status)
rhstatus
;;
condrestart)
[ -f /var/lock/subsys/galleond ] && restart || :
;;
*)
echo $"Usage: $0 {start|stop|status|reload|restart|condrestart}"
exit 1
esac

------

This uses enough of the daemonish features that start will display [ OK ] and a lock file is created so status somewhat works. It also has comments at the top that allow webmin to see it and config it. You can go into webmin and go to System->Startup and Shutdown and see galleond there. You can select it, start and stop and have it start at boot time. The comments even tell it where to put it in the boot sequence. It really makes things simpler.

But it needs some work. I am not using the 'daemon', 'killproc' or 'status' functions because run.sh doesn't look enough like a daemon. These are nice functions to use because they do a lot of the low level work to be able to cleanly shutdown, do error checking and get status. But I have come to the end of my understanding of Linux, processes and shell scripts.

If anyone out there has more knowledge of these things and wants to hack on these scripts, please feel free to critique and post results for all!

It would be really nice if we could put together an rpm that installed all these in the right places. Then you could just install, go to webmin to ask the server to start on boot, and away you go!!!

PS - on the 8th line of galleond I had the url of the galleon site, which nicely displays in the description of the daemon in Webmin. But I had to remove it because I could not submit it that way (too much of a newbie for this board). I will post that later, when I become a member in good stead


----------



## cmarrin

I have a Linux server running Galleon 1.9.2. It is headless, but in the past it was running an X server. So I could ssh to it from a remote box and run gui.sh and get it to display on that remote box. But I have now removed all the Xorg packages from the Linux box and now I can no longer run gui.sh

I have heard that using X with the GUI is not necessary because it uses Java for it GUI components. But I cannot find any info on this in the forums or in the docs. Is this possible? has anyone successfully done it? By the way, the remote box I am trying to use is a WinXP box, and has JRE 1.5 installed.


----------



## javahmo

cmarrin said:


> I have a Linux server running Galleon 1.9.2. It is headless, but in the past it was running an X server. So I could ssh to it from a remote box and run gui.sh and get it to display on that remote box. But I have now removed all the Xorg packages from the Linux box and now I can no longer run gui.sh
> 
> I have heard that using X with the GUI is not necessary because it uses Java for it GUI components. But I cannot find any info on this in the forums or in the docs. Is this possible? has anyone successfully done it? By the way, the remote box I am trying to use is a WinXP box, and has JRE 1.5 installed.


If you append the ip address of the remote box to the command to run the gui, the configuration gui will connect to that Galleon server instead of localhost.


----------



## cmarrin

javahmo said:


> If you append the ip address of the remote box to the command to run the gui, the configuration gui will connect to that Galleon server instead of localhost.


Ok, then I have a real fundamental misunderstanding of how things work. First of all, when I say "remote box", I mean the WinXP PC that I am trying to run the gui on. This PC does NOT run Galleon, only the Linux server does. That seems to mean that I need to install Galleon on my WinXP PC. But when I do that, it installs the Galleon services, and I can find no way to turn them off. When I blow away the java process which is running Galleon on my PC, it just comes back. If I uninstall Galleon on my PC and try to run gui.sh from a directory of Galleon source files on my PC, it fails to startup with some Java errors.

But if I leave it installed, I can go: gui.sh <Linux server IP address> and Galleon comes up. But it does not operate correctly. First of all, if I add an app (like the Photo app), its GUI shows up in the main panel. But if I exit the GUI app and restart it, the Photo app no longer shows up.

Also, I can go into the Properties panel, where the Network section lives. This shows the "PC IP Address" with a drop down menu showing "Default". When I drop this menu down, it shows the IP address of my WinXP PC, not my Linux system. When I leave the dropdown at "default" and hit Test it does not find any Tivos. But when I set it to the IP of my WinXP PC, it finds both of my Tivos. Hmmmmmm...

Finally, when I bring up the file dialog to set the Recordings Path, it shows me the filesystem of my WinXP PC, not my Linux system.

So what fundamental concept do I have wrong here?


----------



## azitnay

As for stopping the Galleon service (and preventing it from starting automatically), first go to Start -> Run and type:

services.msc

to open up the Services Control Panel. Find Galleon, open its properties, change Startup type to Manual, and hit Stop.

Drew


----------



## javahmo

cmarrin said:


> Ok, then I have a real fundamental misunderstanding of how things work. First of all, when I say "remote box", I mean the WinXP PC that I am trying to run the gui on. This PC does NOT run Galleon, only the Linux server does. That seems to mean that I need to install Galleon on my WinXP PC. But when I do that, it installs the Galleon services, and I can find no way to turn them off. When I blow away the java process which is running Galleon on my PC, it just comes back. If I uninstall Galleon on my PC and try to run gui.sh from a directory of Galleon source files on my PC, it fails to startup with some Java errors.


Yes, you need a local Galleon installation to connect to a remote installation. You can disable the Galleon service under XP: Control Panel/Administrative Tools/Services



> But if I leave it installed, I can go: gui.sh <Linux server IP address> and Galleon comes up. But it does not operate correctly. First of all, if I add an app (like the Photo app), its GUI shows up in the main panel. But if I exit the GUI app and restart it, the Photo app no longer shows up.


Did you press Apply to save the app configuration? Did you append the IP address again?



> Also, I can go into the Properties panel, where the Network section lives. This shows the "PC IP Address" with a drop down menu showing "Default". When I drop this menu down, it shows the IP address of my WinXP PC, not my Linux system. When I leave the dropdown at "default" and hit Test it does not find any Tivos. But when I set it to the IP of my WinXP PC, it finds both of my Tivos.


This test is not critical. If you cannot find the TiVo's you can always add them manually in File/ToGo.



> Finally, when I bring up the file dialog to set the Recordings Path, it shows me the filesystem of my WinXP PC, not my Linux system.


Yes, the file dialogs will all be local; thats the way these GUI components work. You can manually type in the path for the remote server.


----------



## Malibyte

juanian said:


> Ah -- good point, but what are the IP addresses of the two cards? A TiVo has some *annoying* code to make sure that anything doing MRV/ToGo is on the same subnet, and I wonder if the server and TiVo are seen as being in different subnets. Not being extremely network-savvy, I wonder if the Linux box can pass the Rendevous/Bonjour stuff through to keep the TiVo happy. (I expect that it can, but I don't know what may be needed (if anything) to do that.)
> 
> So Malibyte, try choosing different IP addresses in the Galleon IP Address dropdown, and especially try and pick one in the same subnet as the TiVo (plus check the ports Leon lists in the FAQ!).
> 
> One stab in the dark -- do you have "Allow Transfers" enabled on your TiVo, and have you named your TiVo? (Check your System Information page - the TiVoToGo entry shows "a,a,a", right?)
> 
> Do you have other TiVos, and do they see each other if you do?
> 
> One note: the "TiVoListener" part of the log is where Galleon detects my TiVos on my Mac.
> 
> Try this: When you run the GUI, go to File/Properties, double-check your Media Access Key, be sure that your Linux IP address is set right (or try 'Default') and then click on "Test" -- does your TiVo name show up in the box? (What choices show for the IP address in the dropdown?)
> 
> I'm also slightly puzzled by you saying your "server" was .1; is this the Linux box you are using? Are you using a router, and what is its address (normally, the router is .1)?


Hi all -

Have been away for a while as I've been busy with holiday stuff, then upgraded both TiVos over the weekend. Next, will try the new Galleon.

The TiVo (192.168.1.11) is definitely on the same subnet as the "internal" NIC on the server (192.168.1.1), so this shouldn't be the issue. The server is acting as a router for the internal network; the other NIC has a static public IP address. As I mentioned before, this setup "kinda" worked with the old JavaHMO server software, as I could play music and look at pictures on the server but couldn't get anything (e.g. weather pics, movie listings, HTML pages, etc.) from the outside Internet (the TiVo has had no problems getting its updates and guides, however). There still might be a firewall issue, but the firewall is set up to allow anything between machines on the internal network without any restrictions. I will specifically try to test with the individual ports on the list, and go through some of the other checks that Juanian mentioned above.

I do now have two working TiVos, but the Series 2 is now waiting for a wireless NIC before I put it in my kid's room.

Thanks...Bob


----------



## ramblin_wreck

Has anyone firgured out how to handle /etc/hosts for galleon on DHCP'ed hosts?


----------



## crumley

ramblin_wreck said:


> Has anyone firgured out how to handle /etc/hosts for galleon on DHCP'ed hosts?


Can't you force a certain IP address to go to a certain MAC address on your router/DHCP server?


----------



## ramblin_wreck

No. It is just a router with a simple DHCP server service.


----------



## Malibyte

juanian said:


> One stab in the dark -- do you have "Allow Transfers" enabled on your TiVo, and have you named your TiVo? (Check your System Information page - the TiVoToGo entry shows "a,a,a", right?)


Yes, it does.



juanian said:


> Try this: When you run the GUI, go to File/Properties, double-check your Media Access Key, be sure that your Linux IP address is set right (or try 'Default') and then click on "Test" -- does your TiVo name show up in the box? (What choices show for the IP address in the dropdown?)


The Media Access Key is correct.

Choices which show up in the dropdown box: Default, 192.168.1.1, and 64.166.xxx.xxx (the external IP of the server).

Running "Test" from the File/Properties gives me this (using port 7288 and IP 192.168.1.1 OR 64.166.xxx.xxx) in the terminal window, and the progress bar simply runs all the way from left to right, then stops:

[[email protected]: /srv/galleon/bin]$ sh gui.sh
Exception in thread "Timer-8" java.lang.NullPointerException
at org.lnicholls.galleon.gui.MainFrame$NetworkDialog$TiVoListener.stop(MainFrame.java:1384)
at org.lnicholls.galleon.gui.MainFrame$28.run(MainFrame.java:1272)
at java.util.TimerThread.mainLoop(Unknown Source)
at java.util.TimerThread.run(Unknown Source)

If I use "Default" in the drop-down box, it does the search, then says "No TiVos found on this network interface." (???)

I double-checked and made sure all six needed ports are open on the server (from the inside network, which the TiVo is on). I get no dropped packets in my firewall logs from the TiVo.

Also, they have obviously seen each other at some point, because if I go into "File/ToGo", I can see a list of the currently recorded shows on the TiVo (actually my new Humax, with IP 192.168.1.21; the other one is currently off-line and will go into my kid's room). Both TiVos (with their names and correct IP addresses) are also shown. But the TiVo still can't find the server ("No servers are found at 192.168.1.1.....").

I see these in the output of netstat -anl:
tcp 0 0 192.168.1.1:42391 192.168.1.21:80 ESTABLISHED
tcp 0 0 192.168.1.1:7288 0.0.0.0:*  LISTEN
udp 0 0 0.0.0.0:2190 0.0.0.0:*
tcp 0 0 127.0.0.1:1527 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:1099 0.0.0.0:* LISTEN
udp 0 0 0.0.0.0:5353 0.0.0.0:*
tcp 0 0 64.166.xxx.xxx:8081 0.0.0.0:* LISTEN

It appears to be listening to port 8081 on the EXTERNAL IP (?!?) but in the dump below, it's talking on that port (tproxy) on the internal IP.

I see a lot of packets going back and forth (using tcpdump, I see these):
23:29:53.443987 IP kenobi.in.malibyte.net.42391 > 192.168.1.21.www: . ack 2872090 win 32768 <nop,nop,timestamp 776065531 75105326>
23:29:53.446786 IP 192.168.1.21.www > kenobi.in.malibyte.net.42391: . 2872090:2873538(1448) ack 1 win 7504 <nop,nop,timestamp 75105326 77606

23:34:56.176756 IP kenobi.in.malibyte.net.2190 > 192.168.1.255.2190: UDP, length 155
23:34:56.190060 IP 192.168.1.21.2549 > kenobi.in.malibyte.net.tproxy: S 4213225262:4213225262(0) win 5840 <mss 1460,sackOK,timestamp 75135605 0,nop,wscale 0>
23:34:56.190233 IP kenobi.in.malibyte.net.tproxy > 192.168.1.21.2549: R 0:0(0) ack 4213225263 win 0
23:35:01.194749 IP kenobi.in.malibyte.net.2190 > 192.168.1.255.2190: UDP, length 155
23:35:01.207968 IP 192.168.1.21.2550 > kenobi.in.malibyte.net.tproxy: S 4221148722:4221148722(0) win 5840 <mss 1460,sackOK,timestamp 75136107 0,nop,wscale 0>

So...still pulling my hair out. It's got to be something simple. Aargh.

Bob


----------



## juanian

Hmm, this has nearly passed by my level of expertise with Galleon, but I'll give it a last try. At this point, the next thing I can think of is to gather info from your log file, comparing it to my log. Also, what version of Galleon are you using?

I am also puzzled with why 'default' gave you a different response than the other selections. So, let's see what we can find out.

With 'default' chosen, stop the Galleon GUI and Server. Then, restart the Galleon server. Wait for a few minutes (like 5), then check your log file for the following areas:

02:21:21,389 INFO [main] Server - Galleon Version=1.9.2
02:21:21,393 INFO [main] Server - Local IP=<what is this IP>
02:21:21,393 INFO [main] Server - Host=<your host name>
. . .
02:21:33,837 INFO [main] HibernateUtil - Initialized Hibernate
02:21:35,867 DEBUG [main] TiVoListener - Interface: /<what is this IP>
02:21:35,918 DEBUG [JmDNS.ServiceBrowser: _http._tcp.local.] TiVoListener - addService: <a TiVo name>
02:21:35,931 DEBUG [JmDNS.ServiceBrowser: _http._tcp.local.] TiVoListener - addService: <another TiVo name>
02:21:35,932 DEBUG [JmDNS.ServiceResolver] TiVoListener - resolveService: _http._tcp.local. (<the first TiVo name again>._http._tcp.local.)
02:21:35,933 DEBUG [JmDNS.ServiceResolver] TiVoListener - resolveService: _http._tcp.local. (<the second TiVo name again>._http._tcp.local.)
02:21:36,465 INFO [main] AppHost - added factory
02:21:36,465 INFO [main] AppHost - MDNS: http://<what is this IP>:7288/ToGoG/
02:21:37,328 DEBUG [main] Tools - findAvailablePort: 1099
02:21:37,329 DEBUG [main] Tools - Trying port 1099
02:21:37,594 DEBUG [main] Tools - findAvailablePort: 8081
02:21:37,594 DEBUG [main] Tools - Trying port 8081
02:21:37,619 DEBUG [main] Server - Using beacon port=2190
02:21:37,622 INFO [main] BroadcastThread - High frequency enabled
02:21:37,623 INFO [main] Server - Broadcast port=2190
02:21:37,708 DEBUG [ConnectionThread] ConnectionThread - Server waiting for client on port 2190
02:21:37,710 DEBUG [ToGoThread] ToGoThread - tivos=4

If things are working well, you should see something like this when Galleon is getting program info from your TiVo(s):
02:21:37,710 DEBUG [ToGoThread] ToGo - getRecordings: 4
02:21:37,711 DEBUG [ToGoThread] ToGo - mServerConfiguration.getMediaAccessKey()=32
02:21:37,765 DEBUG [ToGoThread] ToGo - /TiVoConnect?Command=QueryContainer&Container=%2FNowPlaying&Recurse=Yes&ItemCount=20&AnchorOffset=0
02:21:41,341 DEBUG [ToGoThread] ToGo - lastChangedDate=Sat Jan 14 02:07:34 MST 2006
02:21:41,342 DEBUG [ToGoThread] ToGo - tivo.getLastChangedDate()=Sat Jan 14 02:00:02 MST 2006
02:21:41,342 DEBUG [ToGoThread] ToGo - total=50
02:21:41,342 DEBUG [ToGoThread] ToGo - tivo.getNumShows()=11
02:21:41,343 DEBUG [ToGoThread] ToGoThread - 1 of 50
02:21:41,352 DEBUG [ToGoThread] ToGoThread - 2 of 50
. . .
02:21:41,386 DEBUG [ToGoThread] ToGoThread - 20 of 50
02:21:41,487 DEBUG [ToGoThread] ToGo - /TiVoConnect?Command=QueryContainer&Container=%2FNowPlaying&Recurse=Yes&ItemCount=20&AnchorOffset=20
02:21:42,910 DEBUG [BroadcastThread] BroadcastThread - Sent broadcast: TiVoConnect=1
Method=Broadcast
Platform=pc/Mac OS X
Machine=<your host name>
Identity=<the same host IP address>
Services=TiVoMediaServer:8081/http
swversion=1.9.2
to <local subnet broadcast address>
02:21:43,814 DEBUG [ToGoThread] ToGo - lastChangedDate=Sat Jan 14 02:07:34 MST 2006
02:21:43,815 DEBUG [ToGoThread] ToGo - tivo.getLastChangedDate()=Sat Jan 14 02:07:34 MST 2006
02:21:43,815 DEBUG [ToGoThread] ToGo - total=50
02:21:43,815 DEBUG [ToGoThread] ToGo - tivo.getNumShows()=20
02:21:43,816 DEBUG [ToGoThread] ToGoThread - 21 of 50
02:21:43,817 DEBUG [ToGoThread] ToGoThread - 22 of 50
. . .

Galleon also automatically adds entries for other Galleon or TiVo Desktop computers, and these give the following errors:

02:34:23,268 ERROR [ToGoThread] ToGo - java.net.ConnectException: Operation timed out
02:34:23,269 DEBUG [ToGoThread] ToGo - java.net.ConnectException: Operation timed out
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:305)
. . .
and
02:32:58,335 ERROR [ToGoThread] ToGo - java.net.ConnectException: Connection refused
02:32:58,338 DEBUG [ToGoThread] ToGo - java.net.ConnectException: Connection refused
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:305)

Now, let's check out the ToGo App. When you start the GUI, you should see the ToGo app listed on the left side (under Apps), and when you choose it, the ToGo app should show on the right side. Be sure that a title shows in the Title field.

Choose File=>ToGo, and look at the list of TiVos. Does anything show in the lower list? Last, did any TiVos show up on the lower list (that you didn't enter yourself)?

EDIT: You can try this with the other IP settings. I suggest this sequence:
After checking the above, start the GUI. Pick a different IP address, and exit the GUI.
Stop the Galleon Server.
Restart the Galleon Server.
Check the results as indicated above.

Interestingly, when I selected "Default", I also had the "No TiVos" message. I can't seem to get any log messages when I use the 'Test' function.


----------



## javahmo

Malibyte said:


> It appears to be listening to port 8081 on the EXTERNAL IP (?!?) but in the dump below, it's talking on that port (tproxy) on the internal IP.


I've found a bug that will could cause the wrong interface to be used for part of the communication with the TiVo recorder. This will be fixed in the next release. This might be a factor in your installation.


----------



## Malibyte

javahmo said:


> I've found a bug that will could cause the wrong interface to be used for part of the communication with the TiVo recorder. This will be fixed in the next release. This might be a factor in your installation.


Hi, Leon:

I've upgraded to Galleon 2.1.0, but I'm still seeing the same issue. The TiVos can't see the server, Galleon can't find the TiVos when doing a search under gui.sh, but it seems to be able to talk to them enough to get their names and their current lists of recordings.










Here's a snippet from netstat -anl:


Code:


tcp        0      0 0.0.0.0:1099            0.0.0.0:*               LISTEN
tcp        0      0 192.168.1.1:7288        0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:1527          0.0.0.0:*               LISTEN
tcp        0      0 192.168.1.1:8081        0.0.0.0:*               LISTEN
udp        0      0 0.0.0.0:2190            0.0.0.0:*
udp        0      0 0.0.0.0:5353            0.0.0.0:*

All looks OK here now except that port 1527 (tcp) is bound only to the localhost address (I don't think that should make any difference, though).

Here's the relevant stuff from the Galleon logs:


Code:


23:11:47,643  INFO [main] Server - java.runtime.name=Java(TM) 2 Runtime Environment, Standard Edition
23:11:47,643  INFO [main] Server - sun.boot.library.path=/usr/java/jre1.5.0_05/lib/amd64
23:11:47,643  INFO [main] Server - java.vm.version=1.5.0_05-b05
23:11:47,643  INFO [main] Server - apps=/srv/galleon/bin/./../apps
23:11:47,644  INFO [main] Server - os.user.home=/root
23:11:47,644  INFO [main] Server - java.vm.vendor=Sun Microsystems Inc.
23:11:47,644  INFO [main] Server - java.vendor.url=http://java.sun.com/
23:11:47,644  INFO [main] Server - path.separator=:
23:11:47,651  INFO [main] Server - java.vm.name=Java HotSpot(TM) 64-Bit Server VM
23:11:47,651  INFO [main] Server - file.encoding.pkg=sun.io
23:11:47,651  INFO [main] Server - user.country=US
23:11:47,651  INFO [main] Server - sun.os.patch.level=unknown
23:11:47,651  INFO [main] Server - skins=/srv/galleon/bin/./../skins
23:11:47,651  INFO [main] Server - java.vm.specification.name=Java Virtual Machine Specification
23:11:47,651  INFO [main] Server - user.dir=/srv/galleon/bin
23:11:47,651  INFO [main] Server - java.runtime.version=1.5.0_05-b05
23:11:47,651  INFO [main] Server - bin=/srv/galleon/bin/./../bin
23:11:47,651  INFO [main] Server - java.awt.graphicsenv=sun.awt.X11GraphicsEnvironment
23:11:47,651  INFO [main] Server - cache=/srv/galleon/bin/./../data
23:11:47,651  INFO [main] Server - java.endorsed.dirs=/usr/java/jre1.5.0_05/lib/endorsed
23:11:47,651  INFO [main] Server - os.arch=amd64
23:11:47,651  INFO [main] Server - java.io.tmpdir=/tmp
23:11:47,651  INFO [main] Server - line.separator=

23:11:47,651  INFO [main] Server - java.vm.specification.vendor=Sun Microsystems Inc.
23:11:47,651  INFO [main] Server - hme=/srv/galleon/bin/./../hme
23:11:47,652  INFO [main] Server - java.awt.fonts=/lib/fonts
23:11:47,652  INFO [main] Server - os.name=Linux
23:11:47,652  INFO [main] Server - sun.jnu.encoding=ISO-8859-1
23:11:47,652  INFO [main] Server - java.library.path=/usr/java/jre1.5.0_05/lib/amd64/server:/usr/java/jre1.5.0_05/lib/amd64:/usr/java/jre1.5.0_05/../lib/am
d64
23:11:47,652  INFO [main] Server - java.specification.name=Java Platform API Specification
23:11:47,652  INFO [main] Server - java.class.version=49.0
23:11:47,652  INFO [main] Server - root=/srv/galleon/bin/./..
23:11:47,652  INFO [main] Server - sun.management.compiler=HotSpot 64-Bit Server Compiler
23:11:47,652  INFO [main] Server - os.version=2.6.14-2-amd64-k8
23:11:47,652  INFO [main] Server - user.home=/srv/galleon/bin/./..
23:11:47,652  INFO [main] Server - user.timezone=US/Pacific
23:11:47,652  INFO [main] Server - java.awt.printerjob=sun.print.PSPrinterJob
23:11:47,652  INFO [main] Server - java.specification.version=1.5
23:11:47,652  INFO [main] Server - file.encoding=ISO-8859-1
.
.
23:11:47,655  INFO [main] Server - Galleon Version=2.1.0
23:11:47,656  INFO [main] Server - Local IP=192.168.1.1
23:11:47,656  INFO [main] Server - Host=kenobi.malibyte.net
23:11:47,656  INFO [main] Tools - Max Memory: 64880640
23:11:47,657  INFO [main] Tools - Total Memory: 64880640
23:11:47,657  INFO [main] Tools - Free Memory: 52685336
23:11:47,769  INFO [main] NetworkServerManager - Creating Database Network Server
23:11:51,278  INFO [main] NetworkServerManager - Created Database Network Server
23:11:51,284  INFO [main] HibernateUtil - Initializing Hibernate
23:11:51,344  INFO [main] Environment - Hibernate 2.1.7
.
.
23:12:02,263 ERROR [main] TiVoListener - java.io.IOException: Operation not permitted
23:12:02,263 DEBUG [main] TiVoListener - java.io.IOException: Operation not permitted
        at java.net.PlainDatagramSocketImpl.send(Native Method)
        at java.net.DatagramSocket.send(Unknown Source)
        at javax.jmdns.JmDNS.send(JmDNS.java:670)
        at javax.jmdns.JmDNS.init(JmDNS.java:134)
        at javax.jmdns.JmDNS.<init>(JmDNS.java:69)
        at org.lnicholls.galleon.server.TiVoListener.<init>(TiVoListener.java:57)
        at org.lnicholls.galleon.server.Server.start(Server.java:268)
        at org.lnicholls.galleon.server.Server.getServer(Server.java:632)
        at org.lnicholls.galleon.server.Server.main(Server.java:1209)

23:12:02,295 ERROR [main] AppFactory - java.io.IOException: Operation not permitted
23:12:02,296 DEBUG [main] AppFactory - java.io.IOException: Operation not permitted
        at java.net.PlainDatagramSocketImpl.send(Native Method)
        at java.net.DatagramSocket.send(Unknown Source)
        at javax.jmdns.JmDNS.send(JmDNS.java:670)
        at javax.jmdns.JmDNS.init(JmDNS.java:134)
        at javax.jmdns.JmDNS.<init>(JmDNS.java:69)
        at org.lnicholls.galleon.app.AppHost.listen(AppHost.java:165)
        at org.lnicholls.galleon.app.AppManager.loadApps(AppManager.java:102)
        at org.lnicholls.galleon.server.Server.start(Server.java:270)
        at org.lnicholls.galleon.server.Server.getServer(Server.java:632)
        at org.lnicholls.galleon.server.Server.main(Server.java:1209)

23:12:02,333 DEBUG [main] Tools - findAvailablePort: 1099
23:12:02,333 DEBUG [main] Tools - Trying port 1099
23:12:02,505 DEBUG [main] Tools - findAvailablePort: 8081
23:12:02,505 DEBUG [main] Tools - Trying port 8081
23:12:02,520 DEBUG [main] Server - Using beacon port=2190
23:12:02,522  INFO [main] BroadcastThread - High frequency enabled
23:12:02,522  INFO [main] Server - Broadcast port=2190
23:12:02,535 DEBUG [main] Server - Server schedule short term: [email protected] for 86400
23:12:02,536 DEBUG [Timer-1] ReloadTask - ReloadTask run:
23:12:02,538 DEBUG [main] Server - Server schedule long term: [email protected] for 720
23:12:02,538 DEBUG [main] Server - Server schedule data: [email protected] for 1440
23:12:02,538 DEBUG [Timer-2] ReloadTask - ReloadTask run:
23:12:02,539 DEBUG [ToGoThread] ToGoThread - tivos=2


23:12:02,539 DEBUG [ToGoThread] ToGo - getRecordings: 2
23:12:02,539 DEBUG [ToGoThread] ToGo - mServerConfiguration.getMediaAccessKey()=32
23:12:02,569 DEBUG [Thread-17] ShoutcastStations - Shoutcast
23:12:02,609 DEBUG [ToGoThread] ToGo - /TiVoConnect?Command=QueryContainer&Container=%2FNowPlaying&Recurse=Yes&ItemCount=20&AnchorOffset=0
23:12:02,887 DEBUG [Thread-18] Users - updateApplications:
23:12:02,887 DEBUG [ConnectionThread] ConnectionThread - Server waiting for client on port 2190
23:12:04,597 DEBUG [Thread-17] ShoutcastStations - Parameters: ?rn=2297&file=filename.pls
23:12:04,597 DEBUG [Thread-17] ShoutcastStations - Parameters: ?rn=1414&file=filename.pls
23:12:04,597 DEBUG [Thread-17] ShoutcastStations - Parameters: ?rn=8045&file=filename.pls
.
.
23:12:05,633 DEBUG [Thread-17] ShoutcastStations - Parameters: ?rn=953137&file=filename.pls
23:12:05,851 DEBUG [ToGoThread] ToGo - lastChangedDate=Thu Jan 19 22:00:06 PST 2006
23:12:05,851 DEBUG [ToGoThread] ToGo - tivo.getLastChangedDate()=Fri Jan 13 23:57:39 PST 2006
23:12:05,851 DEBUG [ToGoThread] ToGo - total=9
23:12:05,851 DEBUG [ToGoThread] ToGo - tivo.getNumShows()=5
23:12:05,851 DEBUG [ToGoThread] ToGoThread - 1 of 9
23:12:05,852 DEBUG [ToGoThread] ToGoThread - 2 of 9
23:12:05,853 DEBUG [ToGoThread] ToGoThread - 3 of 9
23:12:05,853 DEBUG [ToGoThread] ToGoThread - 4 of 9
23:12:05,858 DEBUG [ToGoThread] ToGoThread - 5 of 9
23:12:05,858 DEBUG [ToGoThread] ToGoThread - 6 of 9
23:12:05,858 DEBUG [ToGoThread] ToGoThread - 7 of 9
23:12:05,859 DEBUG [ToGoThread] ToGoThread - 8 of 9
23:12:05,859 DEBUG [ToGoThread] ToGoThread - 9 of 9
.
.
Method=Broadcast
Platform=pc/Linux
Machine=kenobi.malibyte.net
Identity=00:A0:CC:62:50:85
Services=TiVoMediaServer:8081/http
swversion=2.1.0
 to 192.168.1.255
.
.
23:12:07,720 DEBUG [VideoServer] VideoServer - /TiVoConnect?Command=QueryContainer&Container=%2F
23:12:07,721 DEBUG [VideoServer] VideoServer - 192.168.1.21
23:12:07,746 DEBUG [VideoServer] VideoServer - /TiVoConnect?Command=QueryContainer&Container=%2F
23:12:07,746 DEBUG [VideoServer] VideoServer - 192.168.1.11
.
.
23:12:08,403 DEBUG [ListenThread] ListenThread - Got beacon: TiVoConnect=1
Method=broadcast
Platform=tcd/Series2
Machine=HumaxDVD
Identity=5950001C02D065B
Services=TiVo-ServeTcdVideo-1:2191/tvbus_v3,TiVoMediaServer:80/http
swversion=7.2.1-elm-01-2-595
.
.
23:12:08,404  INFO [ListenThread] BroadcastThread - High frequency enabled
23:12:08,958 DEBUG [ListenThread] ListenThread - Got beacon: TiVoConnect=1
Method=broadcast
Platform=tcd/Series2
Machine=Series2
Identity=5400001706A8D72
Services=TiVo-ServeTcdVideo-1:2191/tvbus_v3,TiVoMediaServer:80/http
swversion=7.2.1-oth-01-2-540
.
.
23:12:18,510 DEBUG [Thread-17] ShoutcastStations - PlaylistItem:  Radioseven - www.radioseven.se=http://217.118.212.66:8500
23:12:18,573 DEBUG [Thread-17] ShoutcastStations - PlaylistItem:  Radioseven - www.radioseven.se=http://217.30.80.253:8500
23:12:18,596 DEBUG [Thread-17] ShoutcastStations - PlaylistItem:  Radioseven - www.radioseven.se=http://212.73.29.83:8500
23:12:18,802 DEBUG [Thread-17] ShoutcastStations - PlaylistItem:  Radioseven - www.radioseven.se=http://213.141.88.181:8500
.
.
23:12:21,921 ERROR [ToGoThread] ToGo - java.net.NoRouteToHostException: No route to host
23:12:21,922 DEBUG [ToGoThread] ToGo - java.net.NoRouteToHostException: No route to host
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.PlainSocketImpl.doConnect(Unknown Source)
        at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
        at java.net.PlainSocketImpl.connect(Unknown Source)
        at java.net.SocksSocketImpl.connect(Unknown Source)
        at java.net.Socket.connect(Unknown Source)
        at com.sun.net.ssl.internal.ssl.SSLSocketImpl.connect(Unknown Source)
        at com.sun.net.ssl.internal.ssl.SSLSocketImpl.<init>(Unknown Source)
        at com.sun.net.ssl.internal.ssl.SSLSocketFactoryImpl.createSocket(Unknown Source)
        at org.lnicholls.galleon.togo.TiVoSSLProtocolSocketFactory.createSocket(TiVoSSLProtocolSocketFactory.java:65)
        at org.apache.commons.httpclient.HttpConnection.open(HttpConnection.java:704)
        at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:359)
        at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:168)
        at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:393)
        at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:324)
        at org.lnicholls.galleon.togo.ToGo.getRecordings(ToGo.java:136)
        at org.lnicholls.galleon.togo.ToGoThread.run(ToGoThread.java:58)
.
.
23:12:33,626 DEBUG [Thread-17] ShoutcastStations - PlaylistItem:  ChroniX Aggression - Loud & Clear - www.chronixradio.com=http://64.236.34.67:80/stream/10
39
23:12:33,711 DEBUG [Thread-21] Movies - New: Edwards Simi Valley Plaza 10
23:14:38,434 DEBUG [RMI TCP Connection(5)-64.166.193.210] Configurator - TiVo: Name=HumaxDVD DVR
Server=null
Address=192.168.1.21
Port=80
Platform=null
SoftwareVersion=null
Path=null
LastChangedDate=Thu Jan 19 22:00:06 PST 2006
NumShows=9
Capacity=300

23:14:38,437 DEBUG [RMI TCP Connection(5)-64.166.193.210] Configurator - TiVo: Name=Master-BR DVR
Server=null
Address=192.168.1.11
Port=80
Platform=null
SoftwareVersion=null
Path=null
LastChangedDate=Thu Jan 19 15:57:50 PST 2006
NumShows=0
Capacity=40         (note - it's now running with a 200GB drive)
.
.

Trying to run the test (on the 192.168.1.1 interface) through gui.sh gives me this (on the command line) just after the progress bar gets all the way over to the right:


Code:


[[email protected]: /srv/galleon/bin]$ sh gui.sh
Exception in thread "Timer-8" java.lang.NullPointerException
        at org.lnicholls.galleon.gui.MainFrame$NetworkDialog$TiVoListener.stop(MainFrame.java:1514)
        at org.lnicholls.galleon.gui.MainFrame$29.run(MainFrame.java:1404)
        at java.util.TimerThread.mainLoop(Unknown Source)
        at java.util.TimerThread.run(Unknown Source)

If I use the "Default" address, it runs through the search, then gives me "No TiVos found on this network interface."

So, still scratching my head. Any other hints you could throw my way would be appreciated. Could this have anything to do with the fact that I'm running a 64-bit-optimized kernel and binaries (the Java JRE is also 64-bit)? There should be no firewall issues, as I've allowed everything between the internal network and the server's internal interface.

Thanks...Bob


----------



## javahmo

Malibyte said:


> Hi, Leon:
> 
> I've upgraded to Galleon 2.1.0, but I'm still seeing the same issue. The TiVos can't see the server, Galleon can't find the TiVos when doing a search under gui.sh, but it seems to be able to talk to them enough to get their names and their current lists of recordings.


Is the IP address correct in the Galleon configuration GUI File/Properties menu?
Have you disabled IPv6?


----------



## Malibyte

javahmo said:


> Is the IP address correct in the Galleon configuration GUI File/Properties menu?
> Have you disabled IPv6?


Yes, the IP address is correct:










but it gives me the output in the previous message when I try to test it.

Yes, I have disabled IPv6.


Code:


[[email protected]: /srv/galleon]$ lsmod | grep v6
[[email protected]: /srv/galleon]$


----------



## javahmo

Malibyte said:


> Yes, the IP address is correct:
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> but it gives me the output in the previous message when I try to test it.
> 
> Yes, I have disabled IPv6.
> 
> 
> Code:
> 
> 
> [[email protected]: /srv/galleon]$ lsmod | grep v6
> [[email protected]: /srv/galleon]$


I will have to modify Galleon to get around the error you reported earlier. That should get you further, but might not be a solution to your problem. I will include this in the next version of Galleon.


----------



## Malibyte

javahmo said:


> I will have to modify Galleon to get around the error you reported earlier. That should get you further, but might not be a solution to your problem. I will include this in the next version of Galleon.


Thanks, Leon...I will be happy to help you debug this 

Bob


----------



## jpepin

Well I've installed the latest galleon on my ubuntu "breezy" setup, and it all works great. But I can't seem to get it to start automatically when I log in. I've tried the other tips on this forum, but I can't get it to work. It will really be a pain if I have to start it manually every time I log in or reboot.

Can anyone tell me how to have the galleon server start automatically on boot (Ubuntu 5.10 w/ gnome).


----------



## Malibyte

jpepin said:


> Can anyone tell me how to have the galleon server start automatically on boot (Ubuntu 5.10 w/ gnome).


Here's a quick-and-dirty one I borrowed from someone else here:

As root, copy the following to a file named /etc /init.d/galleon:



Code:


#!/bin/sh
case "$1" in
start)
echo "Starting Galleon TiVo HME server:"
cd /srv/galleon/bin; ./run.sh &       # <------CHANGE this directory to whatever it is on your machine.
;;
stop)
echo "Stopping Galleon TiVo server:"
pkill -f galleon
;;
*)
echo "Usage: /etc/init.d/galleon {start|stop}"
exit 1
;;
esac

Then, at a command prompt:

chmod 750 /etc/init.d/galleon

ln -s /etc/rc0.d/K98galleon /etc/init.d/galleon
ln -s /etc/rc2.d/S98galleon /etc/init.d/galleon
ln -s /etc/rc3.d/S98galleon /etc/init.d/galleon
ln -s /etc/rc6.d/K98galleon /etc/init.d/galleon

You're good to go.


----------



## jpepin

Thanks for the quick respomse...i'll give it a shot!


----------



## jpepin

Malibyte said:


> Here's a quick-and-dirty one I borrowed from someone else here:
> 
> As root, copy the following to a file named /etc /init.d/galleon:
> 
> 
> 
> Code:
> 
> 
> #!/bin/sh
> case "$1" in
> start)
> echo "Starting Galleon TiVo HME server:"
> cd /srv/galleon/bin; ./run.sh &       # <------CHANGE this directory to whatever it is on your machine.
> ;;
> stop)
> echo "Stopping Galleon TiVo server:"
> pkill -f galleon
> ;;
> *)
> echo "Usage: /etc/init.d/galleon {start|stop}"
> exit 1
> ;;
> esac
> 
> Then, at a command prompt:
> 
> chmod 750 /etc/init.d/galleon
> 
> ln -s /etc/rc0.d/K98galleon /etc/init.d/galleon
> ln -s /etc/rc2.d/S98galleon /etc/init.d/galleon
> ln -s /etc/rc3.d/S98galleon /etc/init.d/galleon
> ln -s /etc/rc6.d/K98galleon /etc/init.d/galleon
> 
> You're good to go.


Thanks Malibyte, that did the trick with a couple modifications. It should be :

ln -s /etc/init.d/galleon /etc/rc0.d/K98galleon
ln -s /etc/init.d/galleon /etc/rc2.d/S98galleon
ln -s /etc/init.d/galleon /etc/rc3.d/S98galleon
ln -s /etc/init.d/galleon /etc/rc6.d/K98galleon

Initially it didn't work. Then I changed the file owner to root and the group to users, and it worked (it was originally owner=jpepin, group=jpepin). I don't know enough about it to know if I needed to change both of theses settings, but it worked.

So the question is...does root have to be the owner? Also, how can I check to see that it's working, other than trying it on the Tivo? Is there a command to stop the server?

Thanks again


----------



## azitnay

root would typically be the owner of anything in /etc/init.d... You can ls the dir and verify that everything else is.

I don't know anything about your particular distribution of Linux, but typical commands to start and stop would be:

service galleon start
service galleon stop

If all else fails, the following should definitely work:

/etc/init.d/galleon start
/etc/init.d/galleon stop

Drew


----------



## windracer

Malibyte said:


> Here's a quick-and-dirty one I borrowed from someone else here.


Ah, thanks for reminding me about this! I had been meaning to set up a daemon for Galleon and kept forgetting. Now I'm all set ...


----------



## classicsat

I did the script and the K/S98 links, and Galleon does not autostart, but the /etc/init.d/galleon start command starts it. service galleon start does not work, as I have no service command, at least in my user path.

How do I make galleon

I have couple icons on my desktop ( a shell script) that each starts galleon and the GUI. 

Galleon and the GUI work just fine when I manually start them.

I am using Fedora Core 3, as a user (which auto logs in for me). I will got to root if I need to, but I won't just to autostart Galleon.


----------



## Malibyte

classicsat said:


> I did the script and the K/S98 links, and Galleon does not autostart, but the /etc/init.d/galleon start command starts it. service galleon start does not work, as I have no service command, at least in my user path.
> 
> How do I make galleon
> 
> I have couple icons on my desktop ( a shell script) that each starts galleon and the GUI.
> 
> Galleon and the GUI work just fine when I manually start them.
> 
> I am using Fedora Core 3, as a user (which auto logs in for me). I will got to root if I need to, but I won't just to autostart Galleon.


The service command is not in the "regular" user path (it's in /sbin, I believe).

No guarantees here, but you could try this (as root):

Add this line to the beginning of the /etc/init.d/galleon script:
# chkconfig: 2345 98 98

Then cd to /etc/init.d and issue the following command:
chkconfig --level 2345 galleon on

The Fedora and Mandr(ake, iva) distros utilize chkconfig as a way to turn these init scripts on and off. Hope this works.


----------



## classicsat

I found the service command, That starts galleon manually.

The chkconfig thing doesn't work.

For kicks, I put /sbin/service galleon start in the /etc/rc.d/rc.local file, with no effect.

Any other suggestions.


----------



## classicsat

This is in my system log (galleon not in rc.local)


Feb 1 00:02:45 localhost anacron: anacron startup succeeded
Feb 1 00:02:45 localhost atd: atd startup succeeded
Feb 1 00:02:45 localhost readahead: Starting background readahead: 
Feb 1 00:02:45 localhost rc: Starting readahead: succeeded
Feb 1 00:02:45 localhost messagebus: messagebus startup succeeded
Feb 1 00:02:45 localhost cups-config-daemon: cups-config-daemon startup succeeded
Feb 1 00:02:45 localhost galleon: Starting Galleon TiVo HME server:
Feb 1 00:02:46 localhost galleon: libgcj-java-placeholder.sh
Feb 1 00:02:46 localhost rc: Starting galleon: succeeded
Feb 1 00:02:46 localhost haldaemon: haldaemon startup succeeded

I think it might not be finding the JRE for some reason.

I tried putting the path and java+home variable into the run.sh script, with no effect.


----------



## liam193

crumley said:


> You may not have to remove ipv6. I run ipv6 and Galleon works fine for me.


Can you give some more details regarding your install? Do you have jmdns installed on your system? What java version are you running, etc.? Keeping IPv6 shutdown is getting more and more difficult.


----------



## ocntscha

About a year ago when I set up Galleon on my Linux box I stuck the line

/usr/local/galleon/bin/run.sh < /dev/null &> /var/log/galleon.log &

into /etc/rc.local

and modified /usr/local/galleon/bin/run.sh a little bit as shown below, key being to get java in $PATH and changing directory to wherever run.sh is (cd /usr/local/galleon/bin) so that the lines with the relative paths in them ("CLASSPATH=*..*/conf" and "for j in *..*/lib/*.jar") will work.

Thats all it took as I recall, its served me well for the past year.

#!/bin/bash
#
# Run the Galleon server
#
# You may have to set JAVA_HOME to the correct value for your system

export PATH=/usr/java/jre1.5.0_06/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/
local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin
export JAVA_HOME=/usr/java/jre1.5.0_06
OLDCLASSPATH=$CLASSPATH
cd /usr/local/galleon/bin
CLASSPATH=../conf
for j in ../lib/*.jar
do
CLASSPATH=$CLASSPATH:$j
done

OPTION=""
if [ -f "$JAVA_HOME/bin/server" ]; then
OPTION=-server
fi
#java $OPTION -cp $CLASSPATH -Xms64m -Xmx64m -Djava.awt.fonts="$JAVA_HOME/lib/fo
nts" -Dawt.toolkit=com.eteks.awt.PJAToolkit org.lnicholls.galleon.server.Server
ulimit -n 3072
java $OPTION -cp $CLASSPATH -Xms64m -Xmx128m -Djava.awt.fonts="$JAVA_HOME/lib/fo
nts" -Dawt.toolkit=com.eteks.awt.PJAToolkit org.lnicholls.galleon.server.Server
export CLASSPATH=$OLDCLASSPATH


----------



## seanatki

Here is my problem.

If the server is running, I can't get gui.sh to show me anything other than the logo that pops up.

If the server is not running, gui.sh seems to work fine, but it obviously cannot not connect to the server.

I know the server is working properly since my TiVo can see it, so does anybody have an idea of what the problem might be?


----------



## windracer

What version are you running? As of 2.5.0 (and now 2.5.1 was released today) there is a Linux makefile for installs. Maybe you should give the new version a shot to see if that helps (assuming you're not running it already).


----------



## seanatki

I'm downloading it now. Hopefully this will not only work, but be a little easier to get running. Thanks!


----------



## seanatki

I posted this over in the "Galleon Development Restarting" thread, but it's getting ignored. I guess it's more appropriate for this thread.


I'm having an issues with the wrapper in Ubuntu.

I see "Galleon 2.5.1 is starting," but after 2 minutes, it spits out alot of mess. The beginning of that mess is indicated in the log file as:

"Startup failed: Timed out waiting for signal from JVM."

The wrapper then tries again with a different JVM. This continues unless I stop it.

Any ideas on what would cause this error?

Edit: Hear is a txt file of the jvm dump after the hang


----------



## windracer

No idea, sorry! What version of java are you using? Is there anything else in the wrapper or Galleon log files?


----------



## seanatki

On a whim, I made the timeout value 500 seconds instead of the default 120 seconds in wrapper.conf. This reports back that the Galleon is ready. I guess it needed more time!

Now I have the same problem I had before, in that the server is running, but now the GUI won't run. Is it possible to run the GUI on a computer other than the server?


----------



## s2kdave

I don't think it will run across machines. I've tried it a couple times. It's really annoying. I'm sure it can be changed so it will run across machines, but it will take some debugging and code changes. I wish it was just a web page rather than a java GUI that used RMI.

I have a headless linux install so what I did was run galleon on another machine to generate the configure.xml file, then copy that file over to my linux machine.


----------



## s2kdave

One thing to check is your firewall for denies. The GUI uses RMI to connect to the server so it might be blocking that port. The default for RMI is 1099, not sure if Galleon changed the port number or not. Also don't attempt to start the GUI until after you see the Galleon started message in the log or it hangs.


----------



## juanian

I haven't used the latest version of Galleon, but with earlier versions, I was able to run the GUI on a different machine than the one the server was running on. I had the server running on a Windows 98 machine, and ran the GUI on a Mac running OS X.

I had to make a change to the gui.sh file; I added $1 to the end of the java line, then ran the GUI as follows: 
cd <Galleon bin directory>; ./gui.sh <ip address of server>

The only problem I had was if I modified the preferences; if I did, it changed the format of the 'skin' value from PC format to Unix format.

I don't think this ability would have been disabled, but I must admit I haven't used it in a while.


----------



## ocntscha

You can run practically any graphical program on a "headless" Linux box and have the graphics displayed on and receive input from (mouse and keyboard) another computer. Its easy. I Googled X11 display export for you guys, the second link looks pretty good, lf222, UNIXBasics: Running applications remotely with X11 Also, check out ssh -Y or ssh -X.


----------



## windracer

My Linux box running Galleon is headless as well. I use VNC over SSH through PuTTY to get to the Galleon GUI.

http://www.cl.cam.ac.uk/research/dtg/attarchive/vnc/sshvnc.html
http://martybugs.net/smoothwall/puttyvnc.cgi


----------



## windracer

I've got Galleon running on Ubuntu now.


----------



## txGeekGod

seanatki said:


> On a whim, I made the timeout value 500 seconds instead of the default 120 seconds in wrapper.conf. This reports back that the Galleon is ready. I guess it needed more time!
> 
> Now I have the same problem I had before, in that the server is running, but now the GUI won't run. Is it possible to run the GUI on a computer other than the server?


Have you tried issuing "xhost +" from a command line on the box?

If that works, don't forget to "xhost -" when you're done.

Bill


----------



## TiVoter123

Malibyte said:


> 17:37:04,239 ERROR [main] TiVoListener - java.io.IOException: Operation not permitted
> 17:37:04,239 DEBUG [main] TiVoListener - java.io.IOException: Operation not permitted
> at java.net.PlainDatagramSocketImpl.send(Native Method)
> at java.net.DatagramSocket.send(Unknown Source)
> at javax.jmdns.JmDNS.send(Unknown Source)
> at javax.jmdns.JmDNS.init(Unknown Source)
> at javax.jmdns.JmDNS.<init>(Unknown Source)
> at org.lnicholls.galleon.server.TiVoListener.<init>(TiVoListener.java:57)
> at org.lnicholls.galleon.server.Server.start(Server.java:266)
> at org.lnicholls.galleon.server.Server.getServer(Server.java:611)
> at org.lnicholls.galleon.server.Server.main(Server.java:1169)
> 
> 17:37:04,252 ERROR [main] AppFactory - java.io.IOException: Operation not permitted
> 17:37:04,253 DEBUG [main] AppFactory - java.io.IOException: Operation not permitted
> at java.net.PlainDatagramSocketImpl.send(Native Method)
> at java.net.DatagramSocket.send(Unknown Source)
> at javax.jmdns.JmDNS.send(Unknown Source)
> at javax.jmdns.JmDNS.init(Unknown Source)
> at javax.jmdns.JmDNS.<init>(Unknown Source)
> at org.lnicholls.galleon.app.AppHost.listen(AppHost.java:201)
> at org.lnicholls.galleon.app.AppManager.loadApps(AppManager.java:80)
> at org.lnicholls.galleon.server.Server.start(Server.java:268)
> at org.lnicholls.galleon.server.Server.getServer(Server.java:611)
> at org.lnicholls.galleon.server.Server.main(Server.java:1169)


Malibyte,

Did you ever find a fix for this? I am having the same problem trying to install on Ubuntu.


----------



## s2kdave

My first guess is that your multicast broadcast address isn't set up on your linux. The stack trace shows it's trying to send the UDP packets out to broadcast to all your tivos on your LAN about the new applications. I would double check to see if that interface has multicast running doing an "ifconfig". You should see something like this:

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

and it should have a broadcast IP for "Bcast:"


----------



## s2kdave

You could also try manually connecting your tivo to your IP. It doesn't need UDP in that case to see if it works.


----------



## TiVoter123

Code:


[email protected]:/usr/share/galleon/logs# ifconfig
eth1      Link encap:Ethernet  HWaddr 00:14:2A:02:17:93
          inet addr:192.168.1.204  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:114968237 errors:0 dropped:0 overruns:0 frame:0
          TX packets:113391983 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:3862276664 (3.5 GiB)  TX bytes:1334907307 (1.2 GiB)
          Interrupt:18 Base address:0xe400

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:3911 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3911 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:1356864 (1.2 MiB)  TX bytes:1356864 (1.2 MiB)

Looks like broadcast is running. Also, manually adding server at 192.168.1.204 on the tivo doesn't seem to work -- trying to connect to it tivo tells me that it can't find a server at that address.


----------



## s2kdave

actually, looking at the stack again, the exception is most likely preventing the app from opening the socket so a manual connection won't work unless you can get rid of that stack trace either by disabling the multicast jmdns or fixing the udp problem. I suppose it's also possible that the jmdns is trying to bind to the loopback address to do the broadcast which doesn't have multicast (and shouldn't)

Are you running SELinux? if so, check the secure log for any denies when creating the udp packet.


----------



## TiVoter123

s2kdave said:


> Are you running SELinux? if so, check the secure log for any denies when creating the udp packet.


I'm not running SELinux -- I'm running Ubuntu (Feisty Fawn).



s2kdave said:


> a manual connection won't work unless you can get rid of that stack trace either by disabling the multicast jmdns or fixing the udp problem.


I am not sure how to do this? I did a quick google and didn't see anything...



s2kdave said:


> I suppose it's also possible that the jmdns is trying to bind to the loopback address to do the broadcast which doesn't have multicast (and shouldn't)


There could be something going on here. If i disable the loopback connection (ifdown lo), when I start the galleon server, it doesn't generate any logs except for wrapper.log, which contains only:



Code:


STATUS | wrapper  | 2007/10/24 16:43:17 | --> Wrapper Started as Daemon
STATUS | wrapper  | 2007/10/24 16:43:17 | Launching a JVM...
INFO   | jvm 1    | 2007/10/24 16:43:17 | Wrapper (Version 3.2.3) http://wrapper
.tanukisoftware.org
INFO   | jvm 1    | 2007/10/24 16:43:17 |   Copyright 1999-2006 Tanuki Software,
 Inc.  All Rights Reserved.
INFO   | jvm 1    | 2007/10/24 16:43:17 |

Trying to start up the gui in this scenario results in just the splash image coming up, but nothing else, not even a box trying to connect to the server and failing.


----------



## Malibyte

TiVoter123 said:


> Malibyte,
> 
> Did you ever find a fix for this? I am having the same problem trying to install on Ubuntu.


Yes. I had been trying to run it on a box that was also acting as a firewall for my network. Since I moved it to another machine on my internal network (my media server) - it's been working fine.

HTH
Bob


----------



## lrhorer

I'm running Galleon 2.4.0 Alpha under Debian Sarge, and I just tried to upgrade to 2.5.1. The old version of Galleon resides in /Galleon. I put the install package into /Galleon_2.5, and copied the /Galleon/conf directory to /etc/galleon. When I su to root and run "make upgrade" I get the following output:

LinuxServer:/Galleon_2.5# make upgrade
cp -f /etc/galleon/configure.xml /tmp/configure.xml.save
chkconfig --del galleon
make: chkconfig: Command not found
make: *** [uninstall] Error 127

If I try running "make install", I get some directories created, some files copied, some chmod commands, some links created and then the output"

chkconfig --add galleon
make: chkconfig: Command not found
make: *** [install] Error 127

OK, so now what? I'm not familiar with the chkconfig command.


----------



## nrc

chkconfig is a command used in some distros (RedHat/Fedora/others) to activate and deactivate startup scripts by linking them from /etc/init.d into the appropriate rc directory.

This thread contains a fix to replace chkconfig with update-rc.d. http://www.tivocommunity.com/tivo-vb/showthread.php?t=369945


----------



## TiVoter123

Malibyte said:


> Yes. I had been trying to run it on a box that was also acting as a firewall for my network. Since I moved it to another machine on my internal network (my media server) - it's been working fine.


Heh... look at that... disabled my firewall (forgot that it was even running) and all of a sudden everything works 

Thanks for the trigger-reminder!


----------



## Malibyte

TiVoter123 said:


> Heh... look at that... disabled my firewall (forgot that it was even running) and all of a sudden everything works
> 
> Thanks for the trigger-reminder!


No problem...glad to be of help.


----------



## lrhorer

nrc said:


> This thread contains a fix to replace chkconfig with update-rc.d. http://www.tivocommunity.com/tivo-vb/showthread.php?t=369945


OK, I used the command recommended there and it worked. Well, sort of. The links aren't really working properly, but they are there, and I can work with them to make them right.

I'm still having problems though. In the other thread, they mentioned having to edit out the line /etc/rc.d/init.d/functions in the galleon script. There is no such directory, so I commented out the line, but I wonder what it does or rather is supposed to do?

Anyway, if I run galleon, I get the following:

Try `uname --help' for more information
Unable to locate any of the following binaries:
/usr/share/galleon/bin/./wrapper-linux--32
/usr/share/galleon/bin/./wrapper-linux--64
/usr/share/galleon/bin/./wrapper

There is a file named wrapper-linux-x86-32 in the directory. If I change its name to wrapper or wrapper-linux--32 it stops complaining about the binaries, but still complains about uname. Grepping for uname in the galleon script brings up:

DIST_OS=`uname -s | tr [:upper:] [:lower:] | tr -d [:blank:]`
DIST_ARCH=`uname -p | tr [:upper:] [:lower:] | tr -d [:blank:]`
DIST_ARCH=`uname -m | tr [:upper:] [:lower:] | tr -d [:blank:]`

Typing "ps -ef | grep galleon" returns a ton of running code, but "galleon stop" claims galleon is not running, and attempts to run gui.sh return a "Could not connect to server" error. Now what?

EDIT:
After nosing around, and checking the uname command on my system, it appears there is no -p for the uname utility under Debian Sarge. There doesn't seem to be a compatible switch for uname at all, so I edited the galleon script and set DIST_ARCH to "i686". It stopped the script from complaining, ofc ourse, but the server still does not appear to be running correctly. The only log file in /var/log/galleon is wrapper.log, and it says repeatedly:

Launching a JVM...
Unable to start JVM: No such file or directory (2)
JVM exited while loading the application.

After 5 failed launches the wrapper exits.


----------



## windracer

lrhorer said:


> Anyway, if I run galleon, I get the following:
> 
> Try `uname --help' for more information


What distro are you using? The galleon script uses the 'uname' command to figure out the architecture of your machine, although as you've seen only one binary for the wrapper is included. It looks like the version of uname your distro has doesn't support all the command-line switches being used in the script.

In some distros, the /etc/rc.d/init.d/functions script just includes some basic functions, but Ubuntu (which was specifically the distro I wrote that HOWTO for) doesn't have that, and it's not really necessary to the galleon init script.

Check the log.txt file under /usr/share/galleon/logs. There might be some helpful information there.


----------



## lrhorer

windracer said:


> What distro are you using?


Debian Sarge, as I mentioned before.



windracer said:


> The galleon script uses the 'uname' command to figure out the architecture of your machine, although as you've seen only one binary for the wrapper is included. It looks like the version of uname your distro has doesn't support all the command-line switches being used in the script.


That's pretty obvious. After looking at the script I hard coded the variable to x86. 'No change.



windracer said:


> In some distros, the /etc/rc.d/init.d/functions script just includes some basic functions, but Ubuntu (which was specifically the distro I wrote that HOWTO for) doesn't have that, and it's not really necessary to the galleon init script.


Clearly neither does Debian Sarge, and if it isn't necessary that's fine, but something is preventing Java from finding a file.

Check the log.txt file under /usr/share/galleon/logs. There might be some helpful information there.[/QUOTE]
'Not really. As I posted above, the log file just compains the JVM can't find a file. I went into wrapper.conf and changed the log level to DEBUG, but while the amount of text logged jumped drastically, the info about the errored section isn't any mopre specific. It just says:

STATUS | wrapper | 2007/10/28 21:30:40 | Launching a JVM...
ERROR | wrapper | 2007/10/28 21:30:40 | Unable to start JVM: No such file or directory (2)
DEBUG | wrapper | 2007/10/28 21:30:40 | Signal trapped. Details:
DEBUG | wrapper | 2007/10/28 21:30:40 | signal number=17 (SIGCHLD), source="unknown"
DEBUG | wrapper | 2007/10/28 21:30:40 | Received SIGCHLD, checking JVM process status.
DEBUG | wrapper | 2007/10/28 21:30:40 | JVM process exited with a code of 1, setting the wrapper exit code to 1.
ERROR | wrapper | 2007/10/28 21:30:40 | JVM exited while loading the application.
DEBUG | wrapper | 2007/10/28 21:30:40 | JVM was only running for 0 seconds leading to a failed restart count of 1.
DEBUG | wrapper | 2007/10/28 21:30:40 | Waiting 5 seconds before launching another JVM.

How can I figure out which file Java can't find and how do I tell it where to find it?


----------



## lrhorer

OK, one more step forward. I found the problem with JVM. The server has to be run as root, but root's path did not have the JRE in it. I added the path to Java to root's path and the error went away.

Now, however, I think I'm having a problem similar to what windracer detailed in the other thread. In my case, however, the system started spooling off log files called log.txt, log.txt.1, log.txt.2, etc. Each one is filled with identical lines which say:

ERROR [ListenThread] ListenThread - java.lang.NullPointerException

If I run the test utility in the GUI, it says something to the effect "No TiVos found on the specified network"

There are four lines in wrapper.log which might be pointing to the issue:
INFO | jvm 1 | 2007/10/28 22:09:08 | Loading native library failed: libwrapper-linux-x86-32.so Cause: java.lang.UnsatisfiedLinkError: no wrapper-linux-x86-32 in java.library.path
INFO | jvm 1 | 2007/10/28 22:09:22 | create table PODCAST_TRACKS (PODCAST_ID integer not null, AUDIO_ID integer, title varchar(255), link varchar(1024), guid varchar(255), description varchar(4096), summary varchar(4096), subtitle varchar(4096), category varchar(255), keywords varchar(255), explicit smallint, block smallint, author varchar(255), publicationDate timestamp, url varchar(255), mimeType varchar(50) not null, size bigint not null, statusinteger not null, duration bigint, rating integer, downloadTime integer not null, downloadSize bigint not null, podcast integer, errors integer, TRACK integer not null, primary key (PODCAST_ID, TRACK))
INFO | jvm 1 | 2007/10/28 22:09:22 | create table VIDEOCAST_TRACKS (VIDEOCAST_ID integer not null, VIDEO_ID integer, title varchar(255), link varchar(1024), guid varchar(255), description varchar(4096), summary varchar(4096), subtitle varchar(4096), category varchar(255), keywords varchar(255), explicit smallint, block smallint, author varchar(255), publicationDate timestamp, url varchar(255), mimeType varchar(50) not null, size bigint not null, status integer not null, duration bigint, rating integer, downloadTime integer not null, downloadSize bigint not null, videocast integer, errors integer, TRACK integer not null, primary key (VIDEOCAST_ID, TRACK))
INFO | jvm 2 | 2007/10/28 22:14:51 | Loading native library failed: libwrapper-linux-x86-32.so Cause: java.lang.UnsatisfiedLinkError: no wrapper-linux-x86-32 in java.library.path

Notice there are two lines which suggest JVM can't find a native library libwrapper-linux-x86-32.so. This smells vaguely like it could be related to the variable DIST_ARCH which I had to hard code in order to get the galleon script to quit complaining. This ultimately points the script to the file wrapper-linux-x86-32. Should I copy this file over somewhere, or is there a line in wrapper.conf to tell Java where to find the library?


----------



## windracer

lrhorer said:


> This ultimately points the script to the file wrapper-linux-x86-32. Should I copy this file over somewhere, or is there a line in wrapper.conf to tell Java where to find the library?


The file is actually called libwrapper.so and is under /usr/share/galleon/lib. I'm not sure why yours is now looking for the file with the DIST_ARCH value in the filename there. The line in wrapper.conf that tells it where to find this library is:



Code:


# Java Library Path (location of Wrapper.DLL or libwrapper.so)
wrapper.java.library.path.1=/usr/share/galleon/lib


----------



## lrhorer

windracer said:


> The file is actually called libwrapper.so and is under /usr/share/galleon/lib. I'm not sure why yours is now looking for the file with the DIST_ARCH value in the filename there. The line in wrapper.conf that tells it where to find this library is:
> 
> 
> 
> Code:
> 
> 
> # Java Library Path (location of Wrapper.DLL or libwrapper.so)
> wrapper.java.library.path.1=/usr/share/galleon/lib


The file in ../lib is libwrapper.so, but the file in .../bin is wrapper-linux-x86-32. It's this file about which the error above complains.

I copied wrapper-linux-x86-32 to the directory pointed to by wrapper.java.library.path.1, and it's working, now. I suspect adding the /usr/share/galleon/lib directory to the PATH variable might work, as well.


----------



## lrhorer

Well, I have 2.5 / Linux running, but I cannot seem to transfer back to the TiVos any program which was originally transferred using 2.4. I can start the transfer and begin watching the program, but at some undetermined point in the transfer the TiVo will fail the process. In the To Do History log, it says the recording was not transferred because it was corrupted or longer than reported. I don't know if it is somehow related, but the files also do not show up as having been transfered to the PC in the first place in the Galleon log. Is anyone else having this problem? Is there something special about files transferred under 2.4? I can transfer programs I have authored myself under either version. Right now, however, I have a very large number of programs which are essentially stranded on my file server because they will not transfer successfully.

Edit:
I was mistaken. It's not just a 2.4 / 2.5 issue. I created a dual version system which can (fairly) easily switch between 2.4 and 2.5. Both are having trouble with various transfers. After some additional testing, I was able to establish that the transfers will often fail no matter which version downloaded them or which version attempted to transfer them back. There are a handful of programs which would not transfer from one particular TiVo to the PC, but when I did an MRV transfer to the other TiVo and then transferred to the PC, it went fine. The programs which are failing to go back to the TiVos are failing long before the end of the program, so I don't think it's a matter of the files being longer than reported. I managed to catch one of the failures when it happend, and the TiVo screen reported there had been a network error, and the transfer would resume momentarily. It never did.

TiVo Desktop doesn't seem to have the same problem. I've transferred several of the same flles which are failing under Galleon without a problem.


----------



## lrhorer

It looks like the issue may be large files. Others are also reporting failures with large files. The failure point me be 2.0G.


----------



## lrhorer

windracer said:


> The file is actually called libwrapper.so and is under /usr/share/galleon/lib.


Well, I had Galleon 2.5.2 working just fine, but now I've managed to break it, and I hope someone can help. I'm moving from a relatively small (500G) system to a 5T+ RAID system. I've upgraded from Debian Sarge to Etch and ironed out most of the wrinkles, but I've managed to kill the Galleon apps I love so much , like Weather, TTG from the TiVo, and Music. TTG from the desktop and TiVo to ComeBack work fine. The good news is I think I've found the problem. The bad news is I don't know how to fix it.

According to wrapper.log, it can't load libwrapper.so because it's 32 bit, but I have an AMD-64 x 2 CPU and I'm running the 64 bit version of Java. How can I either get it to load the 32 bit version or get a copy fo a 64 bit version?

Windracer, do you have any ideas? s2kdave, are you still listening?


----------



## s2kdave

lrhorer said:


> s2kdave, are you still listening?


Haha, yeah, I'm still listening, just not spending time doing development. Your problem is that there aren't 64 bit binaries for the wrappers that get installed with galleon. You can download the linux version of the java service wrapper and get the 64 bit binary from it and copy it in place.

http://wrapper.tanukisoftware.org


----------



## lrhorer

Thanks. I downloaded the files from the link you sent, but it's still not working. I copied over libwrapper.so, and now there aren't complaints in the log file any longer, but still no apps (oh, and I was mistaken. TiVo to ComeBack isn't working for .TiVo files. It is working for .mpg files). I tried replacing wrapper-linux-x86-32 with the wrapper file in ./bin of the download and renaming it to wrapper-linux-x86-64. The script finds it, and still no complaints, but no apps, either. There is also a wrapper.jar in /lib of the download, so I tried copying it over to /usr/lib/galleon/wrapper-3.2.3.jar, but still no luck. The only other two files which seem to me like possible candidates are ./bin/testwrapper and ./lib/wrappertest.jar. The ./lib/wrappertest.jar is referenced in the sample wrapper.conf file in the download but not specifically in /etc/wrapper.conf.

What else should I try?

Edit: Well I got it working. The details of the ordeal are here.


----------



## lrhorer

What's with sourceforge.net? When I try to login to the Galleon site to submit an error report it kicks me out saying my IP is blacklisted. It gives me an e-mail address to contact to help resolve the issue, but when I send e-mail it gets kicked.

s2kdave,

Can you get this through to the guy(s) doing the repair work on Galleon?

I really love Galleon's features compared to everything else out there, but there's a serious issue with the Go Back routine. HD programs which get sent back to the S3 TiVo have corrupted video and audio. Every so often the audio will skip usually accompanied by artifacts in the video. It's much worse on some sources than others. I've seen some reports of the same issue running TiVo Desktop, but have not confirmed it myself. Some shows are bad enough to be essentially unwatchable, and it's aggravating even on the programs with the fewest / mildest issues. Here's the thing, however: the very same programs show no artifacts at all when transferred using pyTiVo. Now pyTiVo doesn't handle naming as elegantly as Galleon, but given a choice between a slightly ugly and slightly deficient NPL and corrupted video, I have to go with the clean video and ugly menus, but all in all I'd rather just have Galleon working 100%.


----------



## windracer

I was able to get in, so I took the liberty of filing the bug for you. 

https://sourceforge.net/tracker/index.php?func=detail&aid=1886303&group_id=126291&atid=705256


----------



## lrhorer

windracer said:


> I was able to get in, so I took the liberty of filing the bug for you.


Thanks, windracer. You have been exceedingly helpful, and I don't just mean in this instance.


----------



## wmcbrine

lrhorer said:


> Now pyTiVo doesn't handle naming as elegantly as Galleon,


Could you elaborate?


----------



## jtkohl

sorry for not paying attention, real life intervenes.
Any java hackers that want to debug & fix things, send me a PM with your sourceforge account name, sign up for the galleon mailing lists, and I'll coordinate your bug fixing efforts :wink:


----------



## lrhorer

wmcbrine said:


> Could you elaborate?


Sorry for the very late reply. I just spotted this. If you are still interested, I was talking about series name handling. Galleon automatically handles series names. With pyTivo one must create metafiles.


----------

