News:

Rule #1 - Be Patient - Rule #2 - Don't ask when, if you don't contribute - Rule #3 - You have coding skills - LinuxMCE's small brother is available: http://www.agocontrol.com

Main Menu
Menu

Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Show posts Menu

Topics - royw

#1
Users / VOIP infrastructure questions
August 12, 2008, 02:35:49 AM
Howdy,

I'm ready to take the plunge and switch the house from POTS to VOIP.  After searching the wiki and forums I still have a couple of questions.  Any pointers, advice, opinions would be appreciated.

First the house is partially wired for 1GB ethernet and has partial wireless coverage, but three rooms don't have either.  I'm not adverse to running more ethernet wire.  I currently have 5 phones (2 phones have 2 wireless headsets for a total of 7 headsets).  Where my core/hybrid is, I currently do not have a POTS drop.

The three wiring scenarios I see are:

1) What I think would be easiest, if it's doable, would be to disconnect the POTS from the external phone line, then put a ATA (IAXy S101I?) where I have both a LAN drop and a POTS drop.  That would allow the existing phones to continue to be used as is.  Then over time I could migrate to VOIP phones.

2) The next scenario is the same as #1 except would use an ATA/PCI adaptor and require adding a POTS drop near the core/hybrid.

3) The last scenario would be replacing the POTS drops with ethernet drops, then either switching to VOIP phones or ATA adaptors at each drop.

What I'd really like to know is if one or more of the above scenarios is a NO-GO before I try.

My next area of confusion is in looking at VOIP services.  If I understand correctly, all I really need is a bare bones service that provides a sip id/gateway and a phone number (and a low cost  :) ).  All of the frills like call waiting/forwarding/...  will be handled locally in the LinuxMCE core/hybrid.

Is there a larger list of known compatible VOIP services than what is listed at:  http://wiki.linuxmce.org/index.php/VOIP_Service_Providers?  Any recommendations for Texas?

Thank you,
Roy
#2
Howdy,

My nVidia 7300 blew some capacitors the other day (photo http://www.flickr.com/photos/royw2/2745659538/), so replaced it with an nVidia 9800 GT.  No X on first boot, then couldn't even get AVWizard to run.  So upgraded to the latest nVidia drivers (NVIDIA-Linux-x86-173.14.12-pkg1.run) per wiki directions and had X working but the onscreen orbiter showing in a little bitty box centered on the display.  More hassles with AVWizard before I hit the winning combination of using the bottom DVI connector to my HDMI TV, followed by entering '1' on the blank screen AVWizard (no case speaker so no beeps).  UI2 without alpha blending.

Well and good.  Got Onscreen orbiter, screen saver working.  But when I use the onscreen orbiter to try to select Media, Videos nothing happens.  I can select all of the other Media sub-items (TV, Audio,...).  OK, I had one of my NFS systems off line, got it back on-line, problem still exists.  OK, try using my nokia n800 and the videos show up fine there (UI-1).  Rooting around in the logs and the only possibility I see is a comment that device 19 has not registered.

Wondering if anyone has any ideas, suggestions?

TIA,
Roy
#3
Developers / Maximum # of Performer attributes?
July 25, 2008, 08:54:30 PM
Howdy,

I currently have 858 movies ripped, which have 31438 Performer (FK_AttributeType = '2') attributes (avg 37 performers/movie).  In both UI 1 & 2, Sort by Performer is only displaying from "Katie Mullins" to the end of the alphabet.

Any hints on where I can find the limit on number of performers?

Thank you,
Roy
#4
Developers / Proposed flickr.pl replacement
July 04, 2008, 02:30:35 AM
Howdy,

The other day I had an inkling to "tune" the types of photos that the screensaver uses.  So found the /usr/pluto/bin/flickr.pl script and took a look see.  There appears to be the capability to specify search tags, but they don't work (actually specifying a tag stops all fetching from flickr).  I then dived into the flickr API to understand enough to maybe troubleshoot flickr.pl.  I ended up writing a script that can handle fetching photos by user id/name, photoset, group, photo search (tags, text,...), and of course interestingness (what works in flickr.pl).  I then started thinking of replacing flickr.pl, so added LinuxMCE file structure and reaping.  I'm at the point of adding the database hooks and daemonizing the script and decided now is probably a good time to bounce this off of the community.

BTW, my current hypothesis on what is wrong with flickr.pl is that the flickr API has changed since the Flickr::API version 0.08 module was released in March 2006.  There is a newer version, 0.09 available that was released in Feb 2008 that might resolve the tag search problem.

To give you a better feel for what my script can do, here's it's current config file:

# This is the configuration file for /home/royw/views/flickrfetchr/flickrfetchr and is where
# you specify what images you want fetched from flickr for the LinuxMCE screensaver
#
# To take full advantage of these options, you should have an account on http://www.flickr.com
#
# For those who are familiar with ruby, the format for this file should be obvious :)
# But for the vast majority, here goes:
#
# Comments start with an '#' and extend to the end of the line
#
# We are initializing the config Hash so each line starts with "config[key]".  The keys
# are all symbols so start with a colon (":key").
#
# Each hash value is an Array so is enclosed in square brackets:
#   config[:key] = []
#
# Empty brackets are permissible
#
# Each element in the value Array is a Hash so is inclosed with curly brackets:
#  config[:key] = [{}, {}, ...]
#
# Each element in the Hash is a key/value pair which are seperated by a =>
#  config[:key] = [{:key1 => value1, :key2 => value2, ...}]
#
# Again each key is a symbol and starts with a colon
#
# String values are enclosed with single quotes while integers are not.  In this
# config file, all values are either integers or strings, even though I document
# the strings with more descriptive types like 'USER_ID' or 'PATH'.
#  config[:key] = [{:key1 => '/home/flickr', :key2 => 20, ...}]
#
# Each section includes an example at the end which starts with ## which show
# proper syntax for that section.

#****** Fetch photo definitions

#***********************************************************************
# To fetch photos from a user account using either the flickr user ID or the user name:
# config[:USERS] = [{
#                       :nsid => USER_ID OR :username => FLICKR_USER_NAME,  # required
#                       :destination => :linuxmce_flickr OR PATH,           # optional, defaults to :linuxmce_flickr
#                       :limit => INTEGER                                   # optional, defaults to @config[:limit]
#                       :extras => STRING                                   # don't use
#                       :per_page => INTEGER                                # optional, defaults to :limit
#                       :page => INTEGER                                    # optional, defaults to 1
#                   }]
##
## this example selects all pictures (up to @config[:limit]) from the user "royw2" flickr account:
config[:USERS] = [{:username => 'royw2'}]

#***********************************************************************
# you can also fetch photos from flickr groups again by either group ID or group name:
# config[:GROUPS] = [{
#                       :nsid => GROUP_ID OR :groupname => GROUP_NAME,      # required
#                       :destination => :linuxmce_flickr OR PATH,           # optional, defaults to :linuxmce_flickr
#                       :limit => INTEGER                                   # optional, defaults to @config[:limit]
#                       :tags => STRING                                     # optional, A tag to filter the pool with.
#                                                                           #   At the moment only one tag at a time is supported.
#                       :extras => STRING                                   # don't use
#                       :per_page => INTEGER                                # optional, defaults to :limit
#                       :page => INTEGER                                    # optional, defaults to 1
#                   }]
##
## this example will fetch photos from two groups: 'Deep Space Astrophotography' and 'Worlds of fancy_computer generated landscapes'.
## The group id for 'Deep Space Astrophotography' is '16194850@N00' so we will use it:
## config[:GROUPS] = [{:nsid => '16194850@N00'}, {:groupname => 'Worlds of fancy_computer generated landscapes'}]

#***********************************************************************
# config[:PHOTOSETS] = [{
#                       :nsid => USER_ID OR :username => FLICKR_USER_NAME,  # required
#                       :destination => :linuxmce_flickr OR PATH,           # optional, defaults to :linuxmce_flickr
#                       :title => STRING                                    #
#                       :limit => INTEGER                                   # optional, defaults to @config[:limit]
#                       :title => STRING                                    # optional, matches one set, default is to match all sets
#                       :extras => STRING                                   # don't use
#                   }]
##
## Say I want to keep a local copy of one of my photosets ('Our Canine Family'), but not include it in the LinuxMCE screensaver
## config[:PHOTOSETS] = [{:username => 'royw2', :title => 'Our Canine Family', :destination => '/home/royw/photos/dogs'}]

#***********************************************************************
# config[:SEARCHES] = [{
#                       :nsid => USER_ID OR :username => FLICKR_USER_NAME,  # required
#                       :destination => :linuxmce_flickr OR PATH,           # optional, defaults to :linuxmce_flickr
#                       :limit => INTEGER                                   # optional, defaults to @config[:limit]
#                       :tags => STRING                                     # optional, A comma-delimited list of tags.
#                                                                           #   Photos with one or more of the tags listed will be returned.
#                       :tag_mode => 'any' OR 'all'                         # optional, Either 'any' for an OR combination of tags,
#                                                                           #   or 'all' for an AND combination.
#                                                                           #   Defaults to 'any' if not specified.
#                       :text => STRING                                     # optional, A free text search. Photos who's title,
#                                                                           #   description or tags contain the text will be returned.
#                       :min_upload_date => STRING                          # optional, Minimum upload date. Photos with an upload
#                                                                           #   date greater than or equal to this value
#                                                                           #   will be returned. The date should be in the
#                                                                           #   form of a unix timestamp.
#                       :max_upload_date => STRING                          # optional, Maximum upload date. Photos with an upload
#                                                                           #   date less than or equal to this value will be returned.
#                                                                           #   The date should be in the form of a unix timestamp.
#                       :min_taken_date => STRING                           # optional, Minimum taken date. Photos with an taken
#                                                                           #   date greater than or equal to this value will be returned.
#                                                                           #   The date should be in the form of a mysql datetime.
#                       :max_taken_date => STRING                           # optional, Maximum taken date. Photos with an taken
#                                                                           #   date less than or equal to this value will be returned.
#                                                                           #   The date should be in the form of a mysql datetime.
#                       :license => STRING                                  # optional, The license id for photos (for possible values
#                                                                           #   see the flickr.photos.licenses.getInfo method).
#                                                                           #   Multiple licenses may be comma-separated.
#                       :extras => STRING                                   # don't use
#                       :per_page => INTEGER                                # optional, defaults to :limit
#                       :page => INTEGER                                    # optional, defaults to 1
#                   }]
##
## Now say I want to include photos of LinuxMCE systems that are on flickr and up to 20 computer case mods:
## config[:SEARCHES] = [{:text => 'LinuxMCE'},
##                       {:tags => 'computer,case,mods', :limit => 20}
##                      ]

#***********************************************************************
# config[:INTERESTING] = [{
#                       :nsid => USER_ID OR :username => FLICKR_USER_NAME,  # optional
#                       :destination => :linuxmce_flickr OR PATH,           # optional, defaults to :linuxmce_flickr
#                       :limit => INTEGER                                   # optional, defaults to @config[:limit]
#                       :date => STRING                                     # optional, a date string
#                       :daycount => INTEGER                                # optional, the number of days up to :date to look
#                                                                           # for photos.  defaults = 0 (i.e., just :date)
#                       :extras => STRING                                   # don't use
#                       :per_page => INTEGER                                # optional, defaults to :limit
#                       :page => INTEGER                                    # optional, defaults to 1
#                   }]
##
## Say I'm feeling nostalgic for the orginal photo selection in LinuxMCE:
## config[:INTERESTING] = [{:limit => 100, :daycount => 5}]

#****** Global Fetch Options
# The following are global options with the default values
# please note that the value syntax differs from the above sections.

#***********************************************************************
# The maximum number of files to attempt to download at a time
## config[:limit] = 3

#***********************************************************************
# Sometimes downloading from flickr is unreliable, so we can retry the
# operation this many times:
## config[:max_save_attempts] = 3

#***********************************************************************
# When FlickrFetcher downloads an image, it limits downloading to the largest possible image that is
# less than or equal to config[:image_max_size] and greater than or equal to config[:image_min_size].

# This is the maximum photo size to download.  If the requested photo exceeds this size in either width or height,
# then we try to find the next smaller image.  If there are no smaller images, then the image is not downloaded.
## config[:image_max_size] = {:width => 1920, :height => 1080}
# Setting either width or height to less than or equal to 0 disables the checking for a maximum size.
## config[:image_max_size] = {:width => 0, :height => -1080}

# This is the minimum photo size to download.  If the requested photo is smaller than this size in either width or
# height then the photo is not downloaded.
## config[:image_min_size] = {:width => 1024, :height => 720}
# Setting either width or height to less than or equal to 0 disables the checking for a minimum size.
## config[:image_min_size] = {:width => -1920, :height => 0}

#***********************************************************************
# config[:image_scale_to_size]  = {:width => 1920, :height => 1080}

#***********************************************************************
# config[:linuxmce_flickr] = {:max_files => 100}




Thank you,
Roy

#5
Howdy,

One of the pains of testing different releases or just recovering from a botched experiment, is having to reapply all the little tweaks to your system after a (re)install.  Particularly if you don't have a separate test system.

While setting up the deploy for a rails app, it hit me that I can just use Capistrano (http://capify.org/) for remote scripting all of these little tweaks.

To use, you need to install ruby and rubygems on your workstation, then use gem to install Capistrano.  You do not have to install anything on your dcerouter.  Your workstation does need to be able to ssh to your dcerouter.

I'm going to present this example as from a kubuntu workstation.  As I normally use gentoo, there might be a few mistakes (I did run each command on my dad's kubuntu, but it's kind of in between 0710 & 0804 (let's just say the upgrade is not going smoothly)).

kubuntu workstation installation example:

$ sudo apt-get install ruby
$ sudo apt-get install rubygems
$ sudo gem install capistrano


The easiest way to run capistrano is out of a rails application.  This can be just a bare bones rails app.


$ sudo gem install rails
$ cd ~
$ rails lmce_manager
$ cd lmce_manager
$ /var/lib/gems/1.8/bin/capify . 
$ vi config/deploy.rb


Here's an example deploy.rb that I'm using for tweaking my dcerouter:

set :application, "lmce_manager"
set :repository,  "http://royw-gentoo/svn/linuxmce/trunk/lmce_manager"
set :user, "linuxmce"
set :runner, "linuxmce"

# If you aren't deploying to /u/apps/#{application} on the target
# servers (which is the default), you can specify the actual location
# via the :deploy_to variable:
# set :deploy_to, "/var/www/#{application}"

set :deploy_to, "/var/www/rails/#{application}"

# If you aren't using Subversion to manage your source code, specify
# your SCM below:
# set :scm, :subversion

set :scm_username, 'linuxmce'
set :scm_password, proc{Capistrano::CLI.password_prompt('SVN pass:')}

role :app, "192.168.80.1"
role :web, "192.168.80.1"
role :db,  "192.168.80.1", :primary => true

namespace(:dcerouter) do
desc "setup core/hybrid"
task :setup do
# setup ssh certificates using ssh-installkeys
# (http://www.catb.org/~esr/ssh-installkeys)
# installed locally on workstation (not on lmce system)
`ssh-installkeys linuxmce@192.168.80.1`

# copy hack_xorg_conf from workstation to dcerouter, then run it
# hack_xorg_conf edits /etc/X11/xorg.conf to add "DisplaySize 406 229" to "Monitor" section
put(File.read('/var/dcerouter/hack_xorg_conf'), '/home/linuxmce/hack_xorg_conf')
sudo "chmod 775 /home/linuxmce/hack_xorg_conf"
sudo "/home/linuxmce/hack_xorg_conf"

# increase firefox's font sizes to 16pt
sudo "mkdir /root/.mozilla/firefox/pluto.default/chrome"
put(File.read('/var/dcerouter/.mozilla/firefox/pluto.default/chrome/userChrome.css'),
'/root/.mozilla/firefox/pluto.default/chrome/userChrome.css')
sudo "chown root.root /root/.mozilla/firefox/pluto.default/chrome/userChrome.css"

# create rails directory that user linuxmce has write permission to
sudo "mkdir /var/www/rails"
sudo "chown linuxmce.linuxmce /var/www/rails"
sudo "chmod 775 /var/www/rails"
end

desc "install rails"
task :install_rails do
# we first install the ancient versions furnished via kubuntu,
sudo "apt-get install -y libyaml-ruby"
sudo "apt-get install -y libzlib-ruby"
sudo "apt-get install -y rubygems"
sudo "apt-get install -y ruby1.8-dev"
sudo "apt-get install -y build-essential"

# then we upgrade gem to the the lastest
sudo "gem update -y"
sudo "gem update -y --system"
sudo "rm /usr/bin/gem"
sudo "ln -s /usr/bin/gem1.8 /usr/bin/gem"

# now we install rails and our required modules
sudo "gem install rails"
sudo "gem install composite_primary_keys"
sudo "gem install railroad"
sudo "gem install will_paginate"
sudo "gem install --platform ruby fastthread"
sudo "gem install --platform ruby mongrel"

sudo "apt-get install -y libmysql-ruby1.8"
sudo "apt-get install -y libmysql-ruby"
sudo "apt-get install -y irb"
end
end


Now after an LMCE install I just run:

$ cd ~/lmce_manager
$ /var/lib/gems/1.8/bin/cap dcerouter:setup


Presto, my dcerouter is tweaked.

To install rails on my dcerouter:

$ cd ~/lmce_manager
$ /var/lib/gems/1.8/bin/cap dcerouter:install_rails


The only downside to Capistrano is the online documentation for version 2.x is sub-par.  The team seems to be working on it at http://capify.org/documentation.  The documentation for 1.3 is available at http://manuals.rubyonrails.com/read/chapter/104.  The book, "Deploying Rails Applications", has a chapter on Capistrano.  IMO, it's an ok intro, but it is not a full reference manual.

Have fun,
Roy
#6
Howdy,

I'm trying to clean up the list of genres that is displayed on UI2's Video, Genre menu.  My thoughts were to simply remove all of the unused  "Genre" Attributes, like:


desc "Remove unused Genre Attributes"
task(:remove_unused_genres => :environment) do
genre_attribute_type = fetch_attribute_type('Genre')
PlutoMedia::LmceAttribute.find_all_by_FK_AttributeType(genre_attribute_type.id).each do |genre_attribute|
if genre_attribute.lmce_files.empty?
puts "Deleting Genre Attribute: #{genre_attribute.Name}"
genre_attribute.destroy
end
end
end


Which does remove all of the Genre Attributes that don't have any File references.

The problem is that the Video, Genre menu now only contains the "All" entry.  I've tried regen'ing the oribiter, reloading the core/hybrid, rebooting, resynchronizing the media, adding a new attribute from the media file sync, restoring the database to it's pre-changed condition.  Nothing seems to work to get the list of Genre.

I've grep'ed in the source code and haven't found anything hinting that the menu requires anything else besides the Attribute and File tables.

I'm hoping some nice guru can point me to where I need to be looking.

Thank you,
Roy
#7
Users / Anyone using DVDProfiler?
May 20, 2008, 08:41:38 AM
Howdy,

For years, I've used the shareware DVDProfiler (http://www.invelos.com/) to manage my DVD collection.  The best feature is that I just scan the barcode of new DVDs and I get good data about the dvd.  While the amazon lookup that LMCE uses is ok, it is neither as accurate nor as complete as I am use to.

So I've written a little hack to allow me to sync the LMCE database from my DVDProfiler database.  It is currently something only the programmer who wrote it could love (it's a rails rake task :) ).

What I would like to know is if there is any interest in the community for this application? 


Thank you,
Roy
#8
Howdy,

Probably not a common case but thought I'd document an unusual occurrence.

My system was 0710 beta 4 i386 upgraded to RC1 via DVD install with keep database option.

While attempting a database dump of pluto_main I got:

linuxmce@dcerouter:~$ mysqldump -u root --databases pluto_main     >pluto_main.sql
mysqldump: Got error: 1146: Table 'pluto_main.Package_Version' doesn't exist when using LOCK TABLES


Here's some investigation using mysql:

mysql> use pluto_main;
mysql> show tables;
+--------------------------------------------------+
| Tables_in_pluto_main                             |
+--------------------------------------------------+
...
| Package_Version                                  |
...
mysql> select * from Package_Version limit 1;
ERROR 1146 (42S02): Table 'pluto_main.Package_Version' doesn't exist
mysql> describe Package_Version;
ERROR 1146 (42S02): Table 'pluto_main.Package_Version' doesn't exist
mysql> drop table Package_Version;
ERROR 1051 (42S02): Unknown table 'Package_Version'

Following this advice: http://lists-archives.org/mysql/21070-lock-tables.html I removed Package_Version.frm from the pluto_main database directory:

dcerouter_72579:/var/lib/mysql/pluto_main# mv Package_Version.frm ~

Now the dump works:

linuxmce@dcerouter:~$ mysqldump -u root --databases pluto_main     >pluto_main.sql
linuxmce@dcerouter:~$ ls -l pluto_main.sql
-rw-r--r-- 1 linuxmce linuxmce 23763604 2008-05-19 20:48 pluto_main.sql


My guess is that Package_Version table was removed for RC1, but the dvd installer did not remove the .frm file.

HTH,
Roy
#9
Howdy,

I just did a 0710 beta 4 DVD i386 install, then added my two NFS drives via admin pages.  What I'm seeing is that the NFS mount points are now under /home/public/data/other/NFS Share [xx].  In beta 3 there were mount points under each of the data/* directories (ex: /home/public/data/videos/NFS Share [xx], /home/public/data/audio/NFS Share [xx]).  Was this an intentional change?

TIA,
Roy
#10
Installation issues / hdhomerun video but no audio
April 10, 2008, 09:03:30 AM
Howdy,

Just received my hdhomerun and attempted plug 'n pray.  Everything appeared to install correctly.  But ended up being able to view channels but not hear them.  Updated the firmware to the latest, no change.  Looked around the pluto admin page but didn't see anything wanting me to specify an audio pipe for the hdhomerun.  My core/hybrid pipes output to my AV receiver which works fine for the DVD playback.  I'm still at 0710 beta 3.

Any hints?

TIA,
Roy
#11
Howdy,

I'm finally starting to feel pretty confident in the models generated by this script so thought I'd share it.  I'm using the models in a media manager that lets you select sets of media objects then perform actions on the sets.  But I'm finding the models very useful to do queries from the rail's console (irb).

This script just queries the mysql pluto databases, then uses the sqlcvs naming convention to create the model associations (belongs_to, has_one, has_many (it doesn't look like pluto uses any pure join tables so there are no has_and_belongs_to_many associations)).

The script is at:  http://roy.wright.org/linuxmce/mysql2models.rb

Here's my notes on setting up a rails project and using this script:

# install graphviz to be able to create class diagrams using railroad
# note, railroad and graphviz are development tools, not required
# for our rails application.

# on your dev system, assuming kubuntu for these notes
# install rails and composite_primary_keys gem
$ sudo apt-get install rubygems
$ sudo apt-get install ruby1.8-dev
$ sudo apt-get install build-essential
$ sudo apt-get install rails
$ sudo gem install composite_primary_keys
$ sudo gem install railroad
$ sudo gem install rails
$ sudo gem install mongrel
### select: mongrel 1.1.4 (ruby)
### select: fastthread 1.0.1 (ruby)
$ sudo gem install will_paginate
$ sudo apt-get install libmysql-ruby1.8
$ sudo apt-get install libmysql-ruby
$ sudo apt-get install irb

# on linuxmce box, backup linuxmce database
# create script:  /home/linuxmce/dump_pluto_databases
$ cat dump_pluto_databases
rm pluto_*.sql
mysqldump -u root --databases pluto_media    >pluto_media.sql
mysqldump -u root --databases pluto_main     >pluto_main.sql
mysqldump -u root --databases pluto_myth     >pluto_myth.sql
mysqldump -u root --databases pluto_security >pluto_security.sql
mysqldump -u root --databases pluto_telecom  >pluto_telecom.sql

# copy the databases to your dev system:
scp "linuxmce@192.168.80.1:pluto_*.sql" .

# on your dev system, create script to load pluto databases:
$ cat load_pluto_databases
mysql -u root --password=secret <pluto_main.sql
mysql -u root --password=secret <pluto_media.sql
mysql -u root --password=secret <pluto_telecom.sql
mysql -u root --password=secret <pluto_security.sql
mysql -u root --password=secret <pluto_myth.sql

# install linuxmce database on development system

# create rails project

$ rails media_manager
      create
      create  app/controllers
...
      create  log/test.log

# now we need to generate the models and database hooks for
# the linuxmce databases.  We use mysql2models.rb to do this.
# To see the command line options:

linuxmce/media_manager $ ../mysql2models.rb --help
Generate ActiveRecord models from a pluto sqlCVS mysql database.
Usage: mysql2models.rb [options] db_name1 [db_name2...]
Options:
Usage: mysql2models [options]
    -p PASSWORD                      Database Password (no password is the default)
    -u USER                          Database User (root is the default)
    -g, --[no-]generate              Generate the models for rails (should only do once)
    -r, --[no-]replace               Replace the data models for rails
    -s, --[no-]stdout                Print the data models to stdout
    -d, --[no-]dbconfig              Create a config/database.yml for the databases
    -h, --help                       This usage information

# normally on first creation, you need the -g, -r, & -d options.  You need
# the -p if your database requires a password, which mine does on my
# development system while a LMCE system does not.
# Note, the -g option does take a while as it is calling "script/generate model MODELNAME"
# for each of the database tables.

media_manager $ ../mysql2models.rb -p secret -grd
pluto_main, processing...
pluto_media, processing...
pluto_myth, processing...
pluto_security, processing...
pluto_telecom, processing...
      create  app/models/pluto_security
      create  test/unit/pluto_security
...
      create  test/unit/pluto_main/vert_alignment_table_test.rb

# create rails databases, these are separate from the linuxmce databases

$ rake db:create
$ rake db:migrate

# now to see if it works:

media_manager $ script/console
Loading development environment (Rails 2.0.2)
>>

# hey it didn't blow up, so let's take a look at a table

>> PlutoMedia::File.find(:first)
=> #<PlutoMedia::File PK_File: 1, EK_MediaType: 24, FK_MediaSubType: nil, FK_FileFormat: nil, FK_FileGroup: nil, DateAdded: "2008-01-15 09:49:27", Path: "/home/public/data", Filename: "documents", Missing: 0, IsDirectory: 1, EK_Users_Private: nil, EK_Device: nil, ModificationDate: "2008-04-05 23:40:48", AttrCount: 0, AttrDate: nil, DateLastViewed: nil, IsNew: true, Ignore: false, INode: 507998, MD5: "", Source: "F", psc_id: nil, psc_batch: nil, psc_user: nil, psc_frozen: false, psc_mod: "2008-04-05 23:41:59", psc_restrict: nil>

# cool, so let's see what dynamic associations we have:

>> PlutoMedia::File.find(:first).class.reflect_on_all_associations.collect{|a| a.name}
=> [:picture_file, :user, :bookmark, :picture, :media_sub_type, :cover_art_scan, :disc, :media_type, :file_attribute, :file_format, :rip_status, :device, :file_group, :playlist_entry, :file_user, :attribute, :long_attribute]

# so let's try one of the dynamic associations:

>> PlutoMedia::File.find(:first).media_type
=> #<PlutoMain::MediaType PK_MediaType: 24, Define: "misc_DocViewer", Description: "Doc Viewer", FK_DesignObj: nil, DCEAware: 1, Extensions: nil, Subdirectory: "documents", IsExternalTransmission: false, FK_Pipe: nil, CanBookmark: false, EK_AttributeType_DefaultSort: nil, psc_id: 21, psc_batch: 356, psc_user: 33129, psc_frozen: false, psc_mod: nil, psc_restrict: nil>


Have fun,
Roy
#12
Users / Borders of KDE desktop not visible
April 04, 2008, 10:35:28 PM
On my TV, my KDE desktop was too large.  I.e., I could only see the top half of the main panel, the K menu was totally off the screen, etc.
What I discovered is that my TV has two 16:9 standard modes.  Setting the TV to 16:9 standard2 made the entire KDE desktop visible.  This then resulted in the on-screen orbiter floating in from the borders so had to re-run the video setup.

HTH,
Roy
#13
Users / Adjusting KDE display resolution
April 04, 2008, 10:26:36 PM
Howdy,

On my system, the icons and fonts in the KDE desktop were too small.  My original resolution was 75 dpi.  Adjusting the resolution to 120 dpi is just about right.  Here's how.

You will need to add:

DisplaySize X Y

to /etc/X11/xorg.conf under the "Monitor" section where:

X = (monitor-width-pixels/desired-dpi)*25.4
Y = (monitor-height-pixels/desired-dpi)*25.4

In my case:

X = (1920/120)*25.4 = 406
Y = (1080/120)*25.4 = 229

so my DisplaySize line is:

DisplaySize 406 229


HTH,
Roy
#14
Users / Adjusting firefox menu font
April 04, 2008, 10:14:21 PM
On my system, firefox's menus were too small to read.  Here's a way to adjust them.

Create firefox chrome directory for root user:

susdo mkdir /root/.mozilla/firefox/pluto.default/chrome

Copy the example userChrome.css file from the linuxmce user account to the this directory:

sudo cp /home/linuxmce/.mozilla/firefox/*.default/chrome/userChrome-example.css /root/.mozilla/firefox/pluto.default/chrome/userChrome.css

Set ownership of the chrome directory and contents to root:root

sudo chown -R root:root /root/.mozilla/firefox/pluto.default/chrome

Edit /root/.mozilla/firefox/pluto.default/chrome/userChrome.css and add the following:

* {
font-size: 16pt !important
}

Adjust the font-size to whatever looks best on your system.

HTH,
Roy
#15
Howdy,

My system is:

  N800 orbiter -> core/hybrid -> AV Receiver -> TV

I just got the USB-UIRT to be able to control both the AV Receiver and the TV.  Cool!

Now I have two minor issues.

The first, when adjusting the volume on my AV receiver (yamaha RX-V861), each volume up/down is 0.5 dB.  This is fine on it's remote as you can hold the volume button down and it will repeat about 5 times a second.  But on the N800, each click of the volume button is an entirely new event which takes about a second.  So changing volume is very tedious.  What I would like to do is have it send multiple volume commands for a single click, say send four up commands to increase the volume 2dB per click.  Is this possible?

The second issue is with power on/off.  The AV receiver has discrete on/off while the TV is a Hitachi so only has a power toggle.  The commands work fine for both devices.  The issue is that when turning the display off from the Power menu, the AV receiver is powered off but not the TV.  Ideally I would prefer it the other way, i.e., display on/off means turn TV on/off.  Is this possible?

TIA,
Roy
#16
Developers / What is an External Key?
February 16, 2008, 06:18:57 AM
Howdy,

I've been trying to figure out what is meant by "external key" in LMCE's databases (EK_* attributes).  This wiki page looks cut off before getting to the meat:

  http://wiki.linuxmce.org/index.php/Naming_of_Foreign_Keys%2C_Indirect_Keys%2C_External_Keys

Googling around has left me a little confused.  Is it just a table extension where the external key matches the primary key of the original table with a 1:1 mapping between tables?  Is it a substitution or surrogate key?

Any hints on where to look?

TIA,
Roy
#17
Installation issues / Missing .id3 files
February 16, 2008, 05:59:03 AM
Howdy,

When ripping DVDs, sometimes I get the .id3 file, sometimes not.  It appears to be dependent on the target filesystem.  For example, if I rip to core's drive (sda1), then I get .id3 files.  But if I rip to either a second internal drive (sdb1 - /mnt/device/34) or to a NFS drive (/mnt/device/36), then the .id3 is not created.

This is with 0710B3 dvd install core/hybrid.

Anyone else seeing this behavior?

TIA,
Roy
#18
Howdy,

I was wanting an authoritative name server for my local intranet.  I also wanted any dynamic IP's to be visible to the name server.  The name server included with linuxmce is configured as a recursive name server.  Here's the changes I did to configure my core's name server to be authoritative and support dynamic IPs.  Note, the machines on my intranet are private, i.e., not known to the outside world.

I named my intranet "wright.local".  Using a "local" top level domain (TLD) is recommended for private intranets.  Some may prefer to use "lan".  You do not want to use any of the standard TLDs like "com", "net", "org",...

I used the core's default intranet addresses, 192.168.80.0/24 with the core at 192.168.80.1.

I've attempted to verbosely document each config file.  :)

The directions for adapting the config files are included in the named.conf file.

If you want to try this, I would suggest building the config in new directories then swapping with the originals when you are ready (I had a little mess when my core hung and I had to restart with only half the configs ready  :)

So start with creating two directories:

  sudo mkdir /etc/bind.new
  sudo mkdir /etc/dhcp3.new


Now copy the contents of the original directories:

  sudo cp -arp /etc/bind/* /etc/bind.new
  sudo cp -arp /etc/dhcp3/* /etc/dhcp3.new


Also create a new resolve.conf file:

  sudo touch /etc/resolv.conf.new


Then add/change the config files below. 

To create a key for use in rndc.key and dhcpd.conf:

  sudo dnssec-keygen -a HMAC-MD5 -b 256 -n user rndc


now get the key from the private file:

  sudo cat Krndc.*.private
  Private-key-format: v1.2
  Algorithm: 157 (HMAC_MD5)
  Key: 3+GnSWV5FKxcUu57k7QFxbpvv/xr4fXj2wBVGtdGifI=
  Bits: AAA=


now cut the key which is to the right of "Key: " and paste where needed (replace "<paste your key here>" with the key in the config files).  So an example using the above key would look like:

key "linuxmce-dhcp" {
        algorithm hmac-md5;
        secret "<paste your key here>";
};


becomes:

key "linuxmce-dhcp" {
        algorithm hmac-md5;
        secret "3+GnSWV5FKxcUu57k7QFxbpvv/xr4fXj2wBVGtdGifI=";
};


Make the logging directory:

  sudo mkdir /var/log/named
  sudo chown bind:bind /var/log/named
  sudo chmod 755 /var/log/named


Change all the file permissions per instructions in named.conf. 

Double check everything.   ::)

Then when you are feeling lucky, rename the original directories and then rename the new directories to take there place:

  sudo mv /etc/bind /etc/bind.original
  sudo mv /etc/bind.new /etc/bind
  sudo mv /etc/dhcp3 /etc/dhcp3.original
  sudo mv /etc/dhcp3.new /etc/dhcp3
  sudo mv /etc/resolve.conf /etc/resolve.conf.original
  sudo mv /etc/resolve.conf.new /etc/resolve.conf


Finally restart the bind and dhcpd services:

  sudo rndc reload
  sudo /etc/init.d/dhcp3-server restart


Check the syslog for any errors:

  grep named /var/log/syslog
  grep dhcpd /var/log/syslog


Here's the config files.

/etc/bind/named.conf

// This is the primary configuration file for the BIND DNS server named.
//
// This configuration supports an authoritative local zone (wright.local on
// 192.168.80.0/24) and allows DHCP to update the local zone. 
// To customize to your setup:
// 1) replace "wright.local" with your internal domain name.
// 2) edit db.wright.local.zone and db.wright.local.rev and replace
//    my static names/addresses with your network's static names/addresses.
//    Make sure to increment the serial number of any file edited. 
//    Note, format of serial number is:  YYYYMMDDNN where YYYY is year,
//    MM is month, DD is day, NN is update number for that day (i.e., 01,
//    02, 03,...)
// 3) rename db.wright.local.zone to match your domain name.
// 4) rename db.wright.local.rev to match your domain name.
// 5) If you changed the internal network IP from the LinuxMCE default of
//    192.168.80.0/24, then replace "192.168.80" with your network
//    ip and replace it's reverse "80.168.192" wity your network ip's
//    reverse.
//
// Please read /usr/share/doc/bind9/README.Debian.gz for information on the
// structure of BIND configuration files in Debian, *BEFORE* you customize
// this configuration file.
//
// If you are just adding zones, please do that in /etc/bind/named.conf.local
//
// references:
// http://www.arda.homeunix.net/dnssetup.html
// http://www.madboa.com/geek/soho-bind/
//
// notes:
// 1) The following command should be ran about twice a year to keep
//    the root servers current:
//      dig @a.root-servers.net . ns > /etc/bin/db.root
//    Root name servers don't change very often so updating this file more
//    than twice a year is probably overkill. Frequent updates also put undo
//    load on the root name servers; they have enough to do as it is.
//
// 2) File permissions:
//    /etc/bind/named.conf   root:root   644
//    /etc/bind/rndc.key     root:bind   640
//    /etc/bind/rndc.conf    root:root   600
//    /etc/resolv.conf       root:root   644
//    /etc/bind              root:bind   775, chmod g+s => drwxrwsr-x
//    /etc/dhcp3             root:root   755
//    /etc/dhcp3/dhcpd.conf  root:root   644
//
// Manually Updating Zone Files
// 1. Use rndc to stop BIND.
//      sudo rndc stop
// 2. Remove any .jnl files from the zone file directory.
//      sudo rm /etc/bind/*.jnl
// 3. Edit the zone files as necessary. Make sure to increment the serial
//    number of any file edited.  Note, format of serial number is:
//    YYYYMMDDNN where YYYY is year, MM is month, DD is day, NN is update
//    number for that day (i.e., 01, 02, 03,...)
// 4. Start BIND using its startup script.
//      sudo /etc/init.d/bind9 start


// secret must be the same as in /etc/bind/rndc.conf
include "/etc/bind/rndc.key";

// access control list used to limit queries to local net
acl "internal-net" { 192.168.80/24; 127.0.0.1; };

controls {
    inet 127.0.0.1 allow { any; } keys { "rndc-key"; };
};

include "/etc/bind/named.conf.options";

// The single dot (.) is the root of all DNS namespace, so
// this zone tells named where to start looking for any
// name on the Internet
zone "." IN {
type hint;
file "/etc/bind/db.root";
};

// local intranet zones and reverse zones
// intranet is wright.local and 192.168.80.0/24
// the DHCP servers is on linuxmce-dhcp
// an optional second nameserver would be on linuxmce-ns2

zone "wright.local" IN {
type master;
file "/etc/bind/db.wright.local.zone";
// both allow-update and update-policy can enable DHCP updates,
// but update-policy allows more control over what kinds of
// updates DHCP can perform on a zone.
// allow-update { none; };
update-policy { grant linuxmce-dhcp subdomain wright.local. A TXT; };
// allow-transfer { key "linuxmce-ns2"; };
// notify on zone transfers
notify yes;
};

zone "80.168.192.in-addr.arpa" IN {
type master;
file "/etc/bind/db.wright.local.rev";
// allow-update { none; };
update-policy { grant linuxmce-dhcp subdomain 80.168.192.in-addr.arpa. PTR TXT; };
// allow-transfer { key "linuxmce-ns2"; };
notify yes;
};

// be authoritative for the localhost forward and reverse zones, and for
// broadcast zones as per RFC 1912 (http://www.ietf.org/rfc/rfc1912.txt)

// Where the localhost hostname is defined
zone "localhost" IN {
// a master type means that this server needn't look
// anywhere else for information; the localhost buck
// stops here.
type master;
file "/etc/bind/db.local";
// don't allow dynamic DNS clients to update info
// about the localhost zone
allow-update { none; };
};

// Where the 127.0.0.0 network is defined
zone "127.in-addr.arpa" IN {
type master;
file "/etc/bind/db.127";
allow-update { none; };
};

zone "0.in-addr.arpa" IN {
type master;
file "/etc/bind/db.0";
allow-update { none; };
};

zone "255.in-addr.arpa" IN {
type master;
file "/etc/bind/db.255";
allow-update { none; };
};


// Include logging config file
include "/etc/bind/logging.conf";

// zone "com" { type delegation-only; };
// zone "net" { type delegation-only; };

// From the release notes:
//  Because many of our users are uncomfortable receiving undelegated answers
//  from root or top level domains, other than a few for whom that behaviour
//  has been trusted and expected for quite some length of time, we have now
//  introduced the "root-delegations-only" feature which applies delegation-only
//  logic to all top level domains, and to the root domain.  An exception list
//  should be specified, including "MUSEUM" and "DE", and any other top level
//  domains from whom undelegated responses are expected and trusted.
// root-delegation-only exclude { "DE"; "MUSEUM"; };

include "/etc/bind/named.conf.local";


/etc/bind/named.conf.options

options {
// tell named where to find files mentioned below
directory "/var/cache/bind";

// file that contains the process id when bind is running
pid-file "/var/run/bind/run/named.pid";

// enable statistics
statistics-file "/var/named/named.stats";
zone-statistics yes;

dump-file "/var/named/named.dump";

// If there is a firewall between you and nameservers you want
// to talk to, you might need to uncomment the query-source
// directive below.  Previous versions of BIND always asked
// questions using port 53, but BIND 8.1 and later use an unprivileged
// port by default.
// query-source address * port 53;

// If your ISP provided one or more IP addresses for stable
// nameservers, you probably want to use them as forwarders. 
// Uncomment the following block, and insert the addresses replacing
// the all-0's placeholder.

// The forwarders option tells BIND to not use iterative queries itself
// for information it doesn't already know about but to forward a
// recursive query to the name servers specified instead.
include "/etc/bind/named.conf.forwarders";

// conform to RFC1035
auth-nxdomain no;

// on a multi-homed host, you might want to tell named
// to listen for queries only on certain interfaces
listen-on-v6 { any; };
listen-on { "internal-net"; };

// to allow only specific hosts to use the DNS server:
allow-query { "internal-net"; };

// sets BIND's default behaviour to refuse all zone transfers.
// Without setting this option, anyone can transfer any zone.
allow-transfer { none; };

// do not generate notify messages for all zones on a restart.
// override for authorative zones
notify no;
};


/etc/bind/logging.conf

logging {

channel default_file {
file "/var/log/named/default.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};
channel general_file {
file "/var/log/named/general.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};
channel database_file {
file "/var/log/named/database.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};
channel security_file {
file "/var/log/named/security.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};
channel config_file {
file "/var/log/named/config.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};
channel resolver_file {
file "/var/log/named/resolver.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};
channel xfer-in_file {
file "/var/log/named/xfer-in.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};
channel xfer-out_file {
file "/var/log/named/xfer-out.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};
channel notify_file {
file "/var/log/named/notify.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};
channel client_file {
file "/var/log/named/client.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};
channel unmatched_file {
file "/var/log/named/unmatched.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};
channel queries_file {
file "/var/log/named/queries.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};
channel network_file {
file "/var/log/named/network.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};
channel update_file {
file "/var/log/named/update.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};
channel dispatch_file {
file "/var/log/named/dispatch.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};
channel dnssec_file {
file "/var/log/named/dnssec.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};
channel lame-servers_file {
file "/var/log/named/lame-servers.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};


category lame-servers {
lame-servers_file;
};
category dnssec {
dnssec_file;
};
category dispatch {
dispatch_file;
};
category update {
update_file;
};
category network {
network_file;
};
category queries {
queries_file;
};
category unmatched {
unmatched_file;
};
category client {
client_file;
};
category notify {
notify_file;
};
category xfer-out {
xfer-out_file;
};
category xfer-in {
xfer-in_file;
};
category resolver {
resolver_file;
};
category config {
config_file;
};
category security {
security_file;
};
category database {
database_file;
};
category general {
general_file;
};
category default {
default_file;
};
};


/etc/bind/rndc.conf

options {
default-server  localhost;
default-key     "rndc-key";
default-port 953;
};

server localhost {
key     "rndc-key";
};

key "rndc-key" {
algorithm       hmac-md5;
secret "<paste your key here>";
};


/etc/bind/rndc.key

key "rndc-key" {
        algorithm hmac-md5;
        secret "<paste your key here>";
};

key "linuxmce-dhcp" {
        algorithm hmac-md5;
        secret "<paste your key here>";
};

key "linuxmce-ns2" {
        algorithm hmac-md5;
        secret "<paste your key here>";
};


/etc/bind/db.wright.local.zone

;
; BIND data file for wright.local
; ref. http://www.redhat.com/docs/manuals/linux/RHL-9-Manual/ref-guide/s1-bind-zone.html
;
$TTL 86400 ; time to live : 86400s = 1 day
; Start Of Authority record, proclaims important authoritative information
; about a namespace to the nameserver.
@               IN SOA  dcerouter.wright.local        roy@wright.org (
                2008013101      ;serial (YYYYMMDDNN where N = 01,02,03,...)
                10800           ;refresh (3 hours)
                7200            ;retry (2 hours)
                36000000        ;expire (10,000 hours = 416 2/3 days)
                86400)          ;default minimum ttl
;
; NameServer record, which announces the authoritative nameservers for a particular zone.
;
                IN NS   dcerouter.wright.local.
;
; Address records specify an IP address to assign to a name
;
dcerouter       IN A            192.168.80.1
dad-kubuntu     IN A            192.168.80.21
royw-gentoo IN A 192.168.80.20
;
; Canonical name records, maps one name to another.
;
linuxmce        IN CNAME        dcerouter


/etc/bind/db.wright.local.rev

;
; BIND reverse data file for wright.local
; ref. http://www.redhat.com/docs/manuals/linux/RHL-9-Manual/ref-guide/s1-bind-zone.html
;
$ORIGIN 80.168.192.in-addr.arpa.
$TTL 86400 ; time to live : 86400s = 1 day
; Start Of Authority record, proclaims important authoritative information
; about a namespace to the nameserver.
@               IN SOA  dcerouter.wright.local        roy@wright.org (
                2008013101      ;serial (YYYYMMDDNN where N = 01,02,03,...)
                10800           ;refresh (3 hours)
                7200            ;retry (2 hours)
                36000000        ;expire (10,000 hours = 416 2/3 days)
                86400)          ;default minimum ttl
;
; NameServer record, which announces the authoritative nameservers for a particular zone.
;
                IN NS   dcerouter.wright.local.
;
; PTR — PoinTeR record, designed to point to another part of the namespace.
;
1               IN PTR  dcerouter.wright.local.
21              IN PTR  dad-kubuntu.wright.local.
20 IN PTR royw-gentoo.wright.local.


/etc/dhcp3/dhcpd.conf

option domain-name-servers 192.168.80.1;
authoritative;

option routers 192.168.80.1;
option subnet-mask 255.255.255.0;

# lease IPs for 1 day, maximum 1 week
default-lease-time 86400;
max-lease-time 604800;

# dynamic DNS updates
ddns-updates on;
ddns-update-style interim;
ddns-domainname "wright.local.";
ddns-rev-domainname "in-addr.arpa.";
ddns-ttl 14400;

# don't let clients modify their own A records
ignore client-updates;

key "linuxmce-dhcp" {
algorithm       hmac-md5;
secret "<paste your key here>";
};

zone wright.local {
primary 192.168.80.1;
key "linuxmce-dhcp";
}

zone 80.168.192.in-addr.arpa {
primary 192.168.80.1;
key "linuxmce-dhcp";
}


option space pxelinux;
option pxelinux.magic code 208 = string;
option pxelinux.configfile code 209 = text;
option pxelinux.pathprefix code 210 = text;
option pxelinux.reboottime code 211 = unsigned integer 32;

subnet 192.168.80.0 netmask 255.255.255.0 {
next-server 192.168.80.1;
filename "/tftpboot/pxelinux.0";
option pxelinux.reboottime = 30;

option domain-name "wright.local";
option domain-name-servers 192.168.80.1;
option routers 192.168.80.1;

default-lease-time 86400;
max-lease-time 604800;
pool {
allow unknown-clients;
range 192.168.80.129 192.168.80.254;
}
}

# PXE booting machines
group {
next-server 192.168.80.1;
filename "/tftpboot/pxelinux.0";
option pxelinux.reboottime = 30;

}

# regular machines
group {
}

# CORE (1) has bad mac address:



/etc/resolv.conf

domain wright.local
nameserver localhost


I'm not sure where to go from here.  Is there enough desire to make this a feature in LinuxMCE?  If so, how?

Have fun,
Roy
#19
Howdy,

I finally added a second drive to my core then replaced 0710B2 with 0710B3 amd64.  The new installation went smooth (the plutohome.com/new_installation.php scripts did timeout).  I was nicely prompted on which hard drive to install on.  During install the second drive was discovered and mounted as an internal drive.  Everything I had working previously checked out.

So on to adding a new feature, mounting an nfs share.  Interestingly the autodiscovery would find cifs shares but did not discover the nfs share.  So simply added the share from pluto admin, Advanced, Configuration, Devices.

The share does show up under /mnt/device/36 and I can rip dvd to it and I can play the video from it.  Interestingly, when choosing the file to play, the UI1 screen with the Play, Close, Delete button has the file location as: "File: Disk #2".

When I go to pluto admin, Files & Media, Media Files Sync, I can not find the nfs share.  I can find the second hard disk under /home/public/data/videos/Internal HDD-CORE(sdb1)[35].  That's where I would expect a symlink to /mnt/device/36.

Any hints on what is responsible for creating the symlink? 

TIA,
Roy
#20
Howdy,

When a dvd is ripped, by default FK_FileFormat and FK_MediaSubType are not set.  It's kind of a pain to manually use pluto_admin to set them, so am working on a script to automate it.  While doing so I've noticed that the EK_MediaType is sometimes 3 and sometimes 5 (LinuxMCE DVD or LinuxMCE video file).  This got me to wondering what it should be, LinuxMCE DVD because it's a .dvd file or is LinuxMCE DVD suppose to mean a dvd disc in a player?  I searched the wiki and the forums and didn't find any enlightenment.


$ mysql
mysql> use pluto_media;
mysql> select Path,Filename,EK_MediaType from File where IsDirectory = '0' and Path like '/home/public/data/videos%' and FK_FileFormat is null;
+------------------------------------------+-------------------------------------------------+--------------+
| Path                                     | Filename                                        | EK_MediaType |
+------------------------------------------+-------------------------------------------------+--------------+
| /home/public/data/videos/Action          | The Art of War.dvd                              |            3 |
| /home/public/data/videos/Action          | Last Man Standing.dvd                           |            3 |
| /home/public/data/videos/Action          | Fair Game.dvd                                   |            3 |
| /home/public/data/videos/Comedy          | Operation Petticoat.dvd                         |            5 |
| /home/public/data/videos/Comedy          | Scooby-Doo 2  Monsters Unleashed  WS .dvd       |            5 |
| /home/public/data/videos/Comedy          | Support Your Local Sheriff.dvd                  |            3 |


FYI, these were all rip'ed with 0710B2. 

Thank you,
Roy