Category Archives: Linux

Sound on Dell XPS L702X in Linux

After getting the sound working on the laptop, I was still running into issues with distorted sound and the sub woofer not working. The sound chipset that is in it is Intel, as can be seen by:

00:1b.0 Audio device: Intel Corporation 6 Series/C200 Series Chipset Family High Definition Audio Controller (rev 05)

The fix was by adding some additional commands to the snd-hda-intel module:

echo "options snd-hda-intel model=ref index=0" >> /etc/modprobe.d/sound.conf
echo "options snd-hda-intel model=6stack-full" >> /etc/modprobe.d/sound.conf

Accessing your eBook collection managed by Calibre without Calibre Server

This post is about how I’ve been going about enabling access to my eBook purchases that are managed with Calibre without actually using the built in Calibre Server.  All of this is running on Linux, with my eBooks and Calibre Library sitting on a remote Linux File Share.

The reason that I’m not using the Calibre Server to do the distribution is because:

  1. I actually store all the eBooks and the Calibre database on a Linux file share that is then shared on my network using Samba.
  2. I use multiple computers to interact with that Calibre database (not at the same time).  They are all setup to open the database on the samba share.
  3. The file share is headless and does not have X installed

So to do this, the first thing I had to do was setup the directory on my file share and then setup samba to share it out to the network.  Once that was done, I then mounted the share on my client computer.  With that done, when I started Calibre for the first time, I just change the configuration to use the samba share directory.  Now whenever I open Calibre, all the eBooks and database files are now stored and shared internally on my file share.

That was great and all, but I also wanted to be able to easily browse the collection inside and outside my network.  To do that, I figured the best way is using a web browser.  After looking around very quickly, I decided to use a software called, “Calibre PHP Server“, since the file server already had Apache and PHP installed on it.  I do have to warn, it’s not the best software out there and the design choices aren’t the best, but it is functional and I was able to get it up and working without having to write it myself.

To get it working with Apache, I created a new sub-domain to put it under, something like books.domain.com.  At that point, the configuration for it was very simple.

<virtualhost *:80>
        ServerName books.somedomain.com
        DocumentRoot "/var/www/books.somedomain.com"
        <directory "/var/www/books.somedomain.com">
                AllowOverride All
                Allow from All
        </directory>
</virtualhost>

After that, I just followed the instructions that came with the software for setting it up.  I also added the optional section, which restricts who can access the books, so that only my wife and I have access to our library.  As I mentioned, the interface isn’t the best, but it is functional.  One area that I ran into issues with was the configuration files.  The first one was the “$config['smarty']” option, which when you install smarty in Ubuntu, you will use, “$config['smarty'] = ‘/usr/share/php/smarty’;”  The other issue is with the, “$config['smarty_dir']“.  I found that no matter what value you enter into it, it won’t work unless you create an additional directory by hand under it called, “smarty_templates_c”.  So for example, if you specify it as “$config['smarty_dir']=’/tmp/smarty’”, then you will then need to create the additional directory as so, “# mkdir /tmp/smarty/smarty_templates_c”.

Now my wife doesn’t have to ask me to put eBooks on her Nook Color anymore, but knows to go to that website when she wants to get one of her books and just download it that way.  It will basically work with any browser and shows all the different file contents it contains.  In our case, we have some PDF’s and epubs.  It works flawlessly.

The next step that I want to take when I have time is to come up with an additional way to use access the library with the source being a OPDS server.  There are two pieces of software that I’m currently looking at, but haven’t had time to play around with them to see which way I like best.  Until then though, this solution is working good for us both.

Ubuntu 10.10 Grub Update for OS X

This article builds upon Triple Booting Windows 7, OS X (Chameleon), and Ubuntu 9.10 (Grub2).

I recently updated my desktop to Ubuntu 10.10 and noticed that the grub commands have changed ever so slightly. With the new installation, I just needed to create the /boot/chameleon/ directory again and copy the boot0 from Chameleon 2.0-RC4 into the directory.

One thing that I noticed is that the new grub script also presents 32-bit and 64-bit options for my OS X installation now, which I’m up to 10.6.3. I take care of loading 64-bit through chameleon though. Here is my new entry for loading OS X through Cameleon.

 menuentry "Mac OS X Chameleon (on /dev/sda2)" {
     insmod hfsplus
     set root='(hd0,msdos2)'
     search --no-floppy --fs-uuid --set 62d3496cb25b59d8
     parttool (hd0,2) boot+
     chainloader (hd0,msdos4)/boot/chameleon/boot0
}

Sometimes it doesn’t copy correctly, but it should be two hyphens in front of no-floppy, fs-uuid, and set

You can find your uuid of your partitions by running blkid.

My current partition setup is:

  • /dev/sda1: Windows 7
  • /dev/sda2: OS X
  • /dev/sda3: Swap
  • /dev/sda4: Ubuntu Linux 10.10

Triple Booting Windows 7, OS X (Chameleon), and Ubuntu 9.10 (Grub2)

So wouldn’t you know it, my video card died and I decided to get around to installing Windows 7 and Ubuntu 9.10 at the same time.  Of course, installing Windows 7 took over the booter, then installing Ubuntu 9.10 took over the booter and did a great job at identifying Windows 7 and OS X.  In fact, it did too good identifying OS X.

The new version of grub2 is able to work directly with OS X to start it up natively.  Unfortunately,  I like to try to not patch OS X as much as possibly, so I use Chameleon, which grub2 was bypassing.  I don’t know what a beautiful solution is, but I do know what a working solution is.

OS with Loaders:

  • Windows 7 (Default Boot Loader)
  • Ubuntu 9.10 (Grub2)
  • OS X 10.5.6 (Chameleon 2.0-RC4)

The first step is to install OS X however you usually do it.  Once it is installed, I chose to upgrade to the latest version of Chameleon for some of the additional video card identification that it was able to provide.  All that requires is downloading from the link above and following the directions.  Before you reboot, copy the boot0 file to removable media.

The next step is to install Windows 7.  Once this is done, Windows has now taken over the boot system and you can no longer start OS X.

Finally, it is time to install Ubuntu 9.10.   Once the install has finished, it has taken over the boot screen and you will see entries for Ubuntu, Windows, and OS X.  The only issue is, if you try to start OS X, it will bypass Chameleon and start the kernel directly.

To fix this issue, make the directory /boot/chameleon and then copy the boot0 from the removable media into that directory.  Then add or update the OS X section to the following:

menuentry "Mac OS X Chameleon (on /dev/sda2)" {
        insmod hfsplus
        set root=(hd0,2)
        parttool (hd0,2) boot+
        search –no-floppy –fs-uuid –set 88e76bb6d81f12fb
        chainloader (hd0,4)/boot/chameleon/boot0
}

The “88e76bb6d81f12fb” is the uuid of the partition. You can find the uuid by:

# user@teh-lunix:~$ ls -l /dev/disk/by-uuid/

MSI Wind and Triple Booting

So I just purchased an MSI Wind from Microcenter and have already removed all the OS’ from it. I’m planning on installing Windows XP, Mac OS X, and Ubuntu Linux. Like most of my laptops, things are just plug and play to get it working, so I have a page to help me remember how I did it at: http://james.jamesandkristin.net/setting-up-msi-wind-to-triple-boot-windows-mac-os-x-linux

So far it looks like it’s perfect for what we need. A nice little laptop that will fit in Kristin’s purse and that will fit in little safes on vacation. Luckily my friend had a usb to ide adapter, so I didn’t have to purchase an external hard drive. I had looked into making a usb boot disks for all three os’s and even looked at using netboot to install. Netboot would have been cool, but I don’t have that much time to get it setup for all three OS’s.

One important note, you need to install Windows XP before anything else.

Using regex on Syslog-ng to save to specific file locations

I had the problem of taking an external syslog feed (through UDP or TCP) that came from multiple devices and then separating them into folders that identified the feeds by customers / device type / host. The one thing I had on my side was that the hostname of the devices were broken up into three parts to help me get this information.

In the old Syslog-ng (1.6.x), there was not a way to regex out this information and then use it in the destination section. Each time we had a new combination, it required writing additional lines with additional regexs. Started to really feel it on performance. With the new branch of syslog-ng (2.0.x), this feature is now available.

You can use up to 256 different $NNN ($1 … $256) macros, but you can only use one regexp expression. This will be done using a filter.

Here’s a full example of what I had done then. What I wanted to do is put the line in a specific file based on part of the hostname. For example:

Hostname: subdomain.domain.tld
Save the log files for that device at:
/logs/$TLD/$DOMAIN/$SUBDOMAIN/$R_YEAR-$R_MONTH-$R_DAY.log

WHERE $TLD is the tld of the hostname, $DOMAIN is the domain from the hostname, and $SUBDOMAIN is the subdomain from the hostname.

I would like to be able to regex this information out of the hostname to use in the destination.

To accomplish this, I was able to use this configuration:

filter f_filter { host(“^([0-9a-zA-Z\-]+)\.([0-9a-zA-Z\-]+)\.([0-9a-zA-Z\-]+)$”); };
destination f_logs { file(“/logs/$3/$2/$1/$YEAR-$MONTH-$DAY.log”); };
log {
     source(external);
     filter(f_filter);
     destination(f_logs);
     flags(final);
};

Gentoo Linux on a Sun Enterprise 250 Sparc

Well, there was a machine at work that was so old and unpatched that it needed to have a new OS installed on it before we could get the required software running correctly.  We contemplated a few different OS’: FreeBSD, Gentoo Linux, Solaris 9, and Solaris 10.  In the end we tried FreeBSD first.  We downloaded the latest stable release, but the system would hang trying to load the kernel.  We then tried Solaris 10. After 20 minutes into the install, we decided we would rather try Gentoo Linux.  This was the first time I’ve really dealt with installing an OS on a sparc machine, let alone linux on it.  It was a very unique feat.  In the end, I was able to get it up and running and stable!!!  I even have a software raid 1 running on all the partitions except for the boot partition.  I’m still trying to get the software raid 1 to work on the boot partition correctly, but have not figured it out yet.

ATI Mobility x1400 on Linux Working … Kinda

I ran across a post in a forum on the Gentoo Forums that pointed out a VERY dirty hack to get the ATI Mobility x1400 working correctly at the correct resolutions.  I haven’t check to see if anything else is working (3D, accelleration, etc) because all I really needed was correct 2D working at 1920×1200.  I was able to get my laptop to work now with 1920×1200 resolution which just looks great.  One issue that I’m having is that when using the console, my font is fuzzy. Fuzzy meaning the pixels around the words are constantly turning on and off in some places.  This is not the console in Xorg, but the one when you hit ALT-F1 …

The only way I was able to get the ati drivers to compile correctly was to switch from using the -mm kernel branch to the standard gentoo sources branch.  I was then able to get the ati drivers to install correctly.  After that I was able to switch a driver out with one at this website.  At that point, everything worked correctly.

Since I switched kernels, my wireless card has stopped working again.  Since I want this laptop for work, which I have a wired connection at work, I’m not too worried about it.  I’ll get it working eventually, just need to spend more time getting it to work with the non -mm kernel. 

Warning about ATI Radeon Mobility X1400 on Linux

So here’s the issue, I bought the Inspiron E1705 with the upgraded video card option, which was the ATI Radeon Mobility X1400.  I also got the upgraded monitor, so the resolution on the monitor is 1920×1200.  Looks great in my opinion.  The issues are that there is currently no support at all for the video card in linux.  You can use the vesa drivers, which will give you a resolution of 1600×1200, which really does get annoying seeing things stretched.  The open source radeon drivers do not work with this chipset, and for some reason ATI has not released any linux drivers for this video card.

I’m going to keep a lookout for solutions on getting this video card working at the correct resolution in linux.  If you are a linux user, I would recommend that you try to get an nVidia card instead of an ATI if at all possible.  nVidia has already released linux video drivers for it’s newest mobility chipsets.  If I had that option when I got this laptop, I would definitely taken that option.

E1705 Showed Up, Linux Installation Started

Well, the Dell Inspiron E1705 I bought showed up yesterday.  Only showed up two weeks before they said it was.  No compaints on this end.  Pretty nice laptop, all in all.

I’ve already started to install Gentoo Linux on the E1705.  Been taking notes what I do along the way.  With all new hardware, this is going to take a little bit to get everything working.  At this time, I have a somewhat stable system running.  I’m still trying new things constantly, so I haven’t gotten to the point to write a good guide to follow as of yet. 

For example, I have just gotten the Intel 3945ABG wireless network card to work, but to do so I’m using the mm-sources kernel tree (linux-2.6.16-rc6-mm2).  I have gotten xorg to work using the vesa drivers, but I am having issues with the ati-drivers (not sure if they will even work at this point).  I think I might stick with this kernel though since it did end up having a lot of nice things added, card reader support and a scheduler for multi-core systems.  I think by the end of this week I’ll have a nice guide up though.  I’ll put the lspci output up now though.

There is also one more issue I might need to solve first.  When trying to install my Windows XP Professional that I had got from school, I always get a blue screen of death during the installation.  Something about the pci.sys is causing trouble.  Still looking into that issue, but it was using a Windows XP Pro installation disk that did not have any service packs.