Wednesday, June 14, 2017

The Comcast Experience

People have always told me how much they hate Comcast. Terrible customer service, constant outages, and ever increasing bills. I would respond that I never really had any issues with them. My service pretty much always worked, and when it didn't, they came out and fixed it. I couldn't recount any terrible customer service anecdotes, and although they did hike the bill on at least a yearly basis, you could call and complain and they would re-promo you. Annoying, sure, but it was just business as far as I was concerned. Yesterday, I got to experience the full Comcast experience that epitomizes why everyone you ask probably hates Comcast.

I work for an ISP, and there is a promotion that I was sure would save one of my friends money over Comcast. We went into the local Comcast office to find out, and it appears that dropping internet and phone service would save her at least $60/month and she would get faster internet speed. She doesn't use the phone, so it was time to cancel Comcast, but first we signed up for the other internet service to ensure she wouldn't be without internet.

Now that her new internet is working, she went back to Comcast to return the equipment. The person there told her that she would need to bring back her DVR box as well, because it won't work without their internet service. No one mentioned this to us when we asked about dropping internet the first time. She asked me to go back with her and talk to them.

When we went back, we were again told that the X1 platform requires Xfinity internet to work. She can get a different DVR, but she can't use that one anymore. Since that's the one with the voice remote and the interface she likes, this new information is unwelcome. I asked if the box would work with another internet service, but they said they were just customer service and did not know. So we went to call the technical support people before we made any changes.

On the phone, the technician told us that the X1 platform has many features that do require internet, and they require Xfinity internet specifically. The box uses the internet through Comcast's network, but charges it against your internet data cap, and it has no way to connect to a different internet service. He did say that the DVR, the voice remote, and the on demand would still work. We asked what else is there that requires Internet. He told us there are apps you can add to the box, and those wouldn't work, but he couldn't tell us much about them as he was an internet specialist, not an X1 platform specialist. He went to get more information from an X1 specialist, but when he returned, he said he was informed that everyone up to that point had been wrong. The X1 box does not require Internet of any kind, and that all features of X1 will work with or without Xfinity or any other internet service. Since it seemed we had an answer that suited us from a source that should be authoritative, it was once again time to cancel Comcast internet service. So he transferred us to a customer service person.

The customer service person tried to upsell us on everything Comcast has, but as I had my answer, I listened politely to her pitch before saying no. She then told us the price would be $20 higher than what we had been quoted in the office 30 minutes ago. I told her that, and she said that she didn't have that price, and that sometimes different offices have different promotions. I asked why Comcast service agents signing me up would give me different prices. She didn't have an answer for this. I told her that felt dishonest to me, but ended the call amicably and returned to the local office.

Talking to the sixth person about this same thing over the course of a week involving at least 3 hours today alone, I was more than a little annoyed by this point. I fully acknowledge that I came off a little adversarial when I approached the next customer service rep. Due to my approach, she was pretty defensive and rude. However, I take full responsibility; I set the stage and her actions were understandable. It's not okay to take out your bad day on a customer service rep. Fortunately, I came to my senses and apologized for my behavior.

The next part is unclear to me. She either told me the price was higher than it was when I talked to the other person, or added in a fee that I knew about, but didn't understand she was adding in, or I misheard her, or...I don't know what. I was upset about the price and feeling that I'd been lied to by Comcast AGAIN, but after discussing it a few more times, we clarified that it was the price that we were clear on originally. She told us that the X1 box would stop working. We told her what the technician said, and she said that's not the way she understood it to work. We told her we'd take that risk and come back if it didn't. She cancelled the services and we went to see what the result was.

The result was that...the box stopped working. It had a generic error message and a code and an instruction to call Xfinity. I made the call and the automated system sent a reset signal. It said it might take a half hour for everything to come back up. We waited the half hour, and no change. So I called them back and talked to a real person. He said the box had been deactivated on our account somehow. Customer service revenge for my rudeness, unhappy coincidence, or honest mistake; I suppose I'll never know. He reactivated the box and it came back to TV immediately. It looked like everything was working; the voice remote, the On Demand, the DVR...but not Netflix. I guess that's one of those internet apps that requires their internet service. Oh well, she has a chromecast, so she decided to save the $60/month for now and maybe just cancel Netflix anyways.

So now I have my very own long rambling rage inducing story to tell whenever someone says they hate Comcast. Welcome to the club I hear them all laughing...

So now I need to go find a replacement for the X1 box. Voice control, on demand, and easy TV channel changing is a must. I wonder if a Fire TV Stick would work...

Saturday, September 28, 2013

Hackintosh Lion Triple Boot with Windows 7 and Linux

My hard drive recently failed and took out all my operating systems. After replacing the drive, I spent a week figuring out how to get all three systems working again. I didn't have a Lion USB installer, because I reused that USB flash drive at some point. I didn't have a working Snow Leopard install to create one. And even after getting those things, I learned that new hard drives are different than the one I had, and they don't play nice with Chameleon due to a new kind of layout called Advanced Format. It's been a long time since I had to do this, so I had forgotten what order things had to be done in to work correctly. It was absolutely horrible, and not something I want to have to relearn (again).

This is a step-by-step guide for installed Lion 10.7.5, Windows 7, and Linux (I use gentoo, but any Linux distro should work) on a Gigabyte GA-Z68A-D3H-B3 motherboard with F13 BIOS (no UEFI) with an Advanced Format Drive. Some of these steps may be very specific to my situation, so it may take some adaptation for your setup. I wish you luck. Feel free to post comments if you have questions about any of this.

This guide assumes that you have a working computer, an optical drive burner, a USB flash drive (8 GB minimum size), access to the Internet, Windows 7 Install DVD, Snow Leopard Install DVD (or a working Snow Leopard 10.6.8 install), and a Linux installer. I can't really help you get any of these things, so I'm just going to assume you already have them. There are some troubleshooting questions at the bottom that cover things I ran across while hashing out this process.

I have tried this entire process from scratch on a blank drive to ensure it works. Some steps may not be necessary on your setup. You don't need to install Snow Leopard if you already have a Lion USB Installer (myHack or UniBeast should both work). You don't need to "fix" Chameleon for Advanced Format Drives if you don't have an Advanced Format Drive (if your hard drive was made after 2011 and is >= 1 TB, it's probably Advanced Format). I used myHack rather than UniBeast (or whatever). Whatever Lion USB Installer you have should be fine, but I have only used myHack. UniBeast has never worked for me. Some steps describe installing drivers or DSDT. You should only use my choices if you have my motherboard and BIOS version. You'll have to figure out what the correct choices are for your motherboard. This process is very similar for Mountain Lion, but I use Lion because I need Xcode 3 and haven't figured out how to make that work in Mountain Lion yet.

Step 1: Install Snow Leopard 10.6.8
Prerequisites:
  1. Snow Leopard Install DVD (10.6.3 is what I'm using)
  2. Snow Leopard 10.6.8 Combo Update http://support.apple.com/kb/dl1399
Boot iBoot CD
When it start up, swap the iBoot CD for the Snow Leopard Install DVD
Press F5 to rescan the disc, and boot into the Mac OS X Install DVD
Install Snow Leopard
Reboot using iBoot CD
Boot the new Snow Leopard Install
Run UpdateHelper and Reboot
(if you don't reboot, the combo updater will destroy Snow Leopard)
Boot Snow Leopard using iBoot
Run the Combo Updater and Reboot

Step 2: Create the myHack USB Installer
Prerequisites:
  1. Bootable Snow Leopard 10.6.8
  2. Lion App from the Mac App Store (I'm using 10.7.3)
  3. USB 8 GB flash drive
Boot into Snow Leopard 10.6.8 using iBoot
Download myHack (version 3.2 Beta 8) from http://myhack.sojugarden.com/
Run myHack to create the USB Installer on your Pen Drive with the Lion App

Step 3: Partition the drive with gptfdisk
Prerequisites:
  1. System Rescue CD http://www.sysresccd.org
Boot the System Rescue CD
From the prompt, run gdisk
  1. # gdisk
In gdisk, make 6 partitions
  1. EFI partition – Type EF00, 200 MiB
  2. Windows 7 partition, Type 0700, 120 GiB
  3. Lion partition, Type AF00, 120 GiB
  4. Linux boot partition, type 0700, 128 MiB
  5. Linux partition, Type 8300, 120 GiB
  6. Linux Swap partition, Type 8200, 4 GiB
Go into the recovery and transformation options (command 'r') and build the hybrid MBR (command 'h'). Add partition 2 to the hybrid and make it bootable.

Write the partition table to disk and shutdown.

Step 4: Install Lion
Prerequisites:
  1. myHack Lion Installer
Boot using the myHack Lion Installer USB flash drive.
Use Disk Utility to format the 2nd partition as HFS+ Journaled.
Install Lion.

Step 5: Install Windows 7
Prerequisites:
  1. Windows 7 Install DVD
Boot the Windows Install DVD.
Install Windows to partition 2.

Step 6: Install Linux
Prerequisites:
  1. Linux Install DVD
Boot the Linux install DVD.
Choose custom partitioning. Partitiot 4 is /boot, Partition 5 is /, and Partition 6 is swap.
Install grub to the boot partition (/dev/sda4 most likely)
Install Linux.


Step 7: Install Chimera so we can boot between the three OSes
Prerequisites:
  1. Lion, Windows 7, and Linux installed
  2. myHack USB Installer flash drive
  3. MultiBeast 4.7.0 http://www.tonymacx86.com
  4. Combo Updater 10.7.5 if you have an old Lion App
Boot Lion from the myHack USB Installer flash drive in single user mode
run the commands at the prompt to mount the root directory
# /sbin/fsck -fy
# /sbin/mount -uw /
Delete the /Extra directory and reboot
# rm -rf /Extra
# reboot

Boot Lion using the myHack USB Installer flash drive in normal mode
Update Lion to 10.7.5 if it is not already on that version or later
Rename the DSDT-GA-Z68A-D3H-B3-F13.aml to DSDT.aml and place it on your Desktop
Run MultiBeast with the following options
  1. Audio – with DSDT ALC889
  2. Networking – lnx2mac RealTek R1000 driver
Step 8: Fix Chimera install on Advanced Format drives
Prerequisites:
  1. An Advanced Format Drive
  2. System Rescue CD
If you have an Advanced Format Drive, when you boot up, you will get a gpt boot0 error issue, or it might just boot right into Windows and ignore Chimera altogether. To fix this, you need to install part of Chimera on the partition. If you have a hard drive made after 2011, it's probably an advanced format drive. You can skip this step if you don't have such a drive.

Boot the System Rescue CD.
Install Chimera to the partition
  1. # mkdir /mnt/lion
  2. # mount /dev/sda3 /mnt/lion
  3. # cp /mnt/lion/usr/standalone/i386/boot1h /tmp
  4. # umount /mnt/lion
  5. # dd if=/tmp/boot1h of=/dev/sda3 bs=4096
Reboot

Questions:

Q: Do you have to use gptfdisk to partition?

A: Although I haven't tested this much, you should be able to use almost any partitioner to partition your drive (e.g. Disk Utility or gparted). However, there are some caveats.

First, only gptfdisk can make the hybrid MBR which is required for Windows 7. You will have to use it for this at the least.

Disk Utility will only make FAT32 and HFS+ partitions. You could probably make FAT32 partitions and then reformat as needed, but that seems odd to me.

If Windows is not the first partition (after the EFI system partition), then it will display blank space where the “gaps” in the partitions are, which I do not like. Disk Utility also leaves gaps after the partitions it creates; another thing I don't like.

Any change to the partition tables by utilities other than gptfdisk will usually destroy the hybrid MBR, which means you'll have to go back in to recreate it (Linux installers sometimes do this anyway).

With the exception of the hybrid MBR, none of these issues should be much of a problem, but since you have to use gptfdisk for the hybrid MBR, I figure you might as well use it for the whole thing. I haven't run across any problems doing it this way so far.

Q: Why doesn't Windows 7 boot or let me install?

Use gptfdisk to check the hybrid MBR. If something messed it up (and a lot of install things can do this), you'll need to recreate it.

The Windows BCD loader might be messed up. You can try using the Windows Install DVD to repair it.

Q: Can I use a different partition scheme?

A: That should not be a problem. However, I have not tested it much.

I know grub2 likes a special grub-bios partition, but I have only used grub legacy, so I don't know much about it.

You might want to add another linux partition for /home (or /boot, /tmp, etc). This should not be a problem. In fact, it's probably a good idea.

You might want to change the partition sizes. My size choices were pretty arbitrary. I just got a new 1 TB drive to replace the one that failed. I'm not even using all of it right now.


Q: Why doesn't Linux show up in Chimera?

A: There are two potential issues I have seen. First, grub might not have been installed to the /boot partition. Recent linux installers I have tried will not let you install grub to a partition, and grub2 doesn't recommend installing to a partition at all. Since I use grub legacy on gentoo, it's not an issue for me. You should be able to force grub2 to install on a partition by using grub-install /dev/sda4 –force (or maybe grub2-install – it varies from distro to distro). The second issue is the partition type. Although it doesn't make sense to me, Chameleon will not recognize grub if the partition type is not 0700 (Microsoft basic data). Using 8300 (Linux partition) will render it invisible to Chameleon.



Saturday, October 20, 2012

numlock on kde under gentoo linux

I find it very annoying that linux seems to have no uniform way to just turn the numlock on when the system comes on and leave it that way. Every minor change of environment resets the numlock back to off, which I can't really imagine anyone actually wanting. Well, maybe people without numeric keypads where the numlock steals part of their keyboard, but for the majority of people who have a standard ANSI 104 key keyboard, I would think you'd want the numlock on by default. Windows understands this, so why doesn't linux?

I use KDE, and there is a setting in KDE that lets you turn the numlock on when you login. However, it doesn't work for all situations. For some reason, the console is a separate environment from the X server (running KDM) which is a separate environment from KDE, and each one has an individual numlock state.

The console is a minor annoyance for me, since I rarely use it, but it's the easiest one to fix so we'll start here. To turn numlock on for your console, simply add the numlock init.d script to your default rc script. e.g. "rc-update add numlock default". When you reboot, numlock will be on by default for the console.

The second enviroment, KDM (the KDE Display Manager) requires a change to the kdmrc file. For some reason, gentoo puts this file in /usr/share/config/kdm rather than somewhere in /etc like I would expect. I know they put it somewhere else on Kubuntu, so if you don't use gentoo, you'll have to find the kdmrc file yourself. Edit this file and look for the line NumLock=Off and change it to NumLock=On and uncomment the line. The next time KDM is started, numlock will be enabled.

The third environment, KDE, requires a change in the Keyboard settings. Go to Settings, Hardware, Input Devices, Keyboard and change Numlock on KDE Startup to to Turn on.

There was a fourth hidden environment for me, which occurs because I use gentoo keychain run from .bash_profile using the x11-ssh-askpass (just ssh-askpass on Ubuntu, btw). So my .bash_profile has some lines like this in it:

export SSH_ASKPASS="/usr/bin/x11-ssh-askpass"
keychain ~/.ssh/id_rsa

So after logging in with KDM (where the numlock was on), numlock would go back to being off before KDE would put it back on with the settings, so x11-ssh-askpass would require me to turn numlock on AGAIN. We can counter this by using numlockx. You can install it using "emerge numlockx" as root. Then we can change the .bash_profile to use numlockx before running keychain.

export SSH_ASKPASS="/usr/bin/x11-ssh-askpass"

if [ x$DISPLAY != x ]; then
        numlockx
fi

keychain ~/.ssh/id_rsa

Finally, I never have to turn on numlock when I'm logging in.

Sunday, May 6, 2012

Snow Leopard 10.6.8 on VirtualBox 4 with Sandy Bridge

Edit: 2013-May-23 -- This doesn't seem to work with new versions of VirtualBox. VirtualBox 4.1.24 seems to be the last version where this will work.

I recently built a new computer and have been trying to get Mac OS X working on it. I don't like Macs well enough to use all the time, but I need one to build software for Mac. Although my machine is capable of being a hackintosh, it is usually easier to build software in a virtual machine which doesn't require restarting.

My old machine was a Core 2 Quad (Kentsfield), and I was easily able to install Snow Leopard in VirtualBox 4 using EFI emulation. However, my new machine is a Core i5 (Sandy Bridge) and the 10.6.3 install disc wouldn't boot in VirtualBox. I eventually ran across some sites saying that Core i users were having trouble using the EFI method and would need to use the standard hackintosh methods to run OS X on non Apple hardware.

I used the iBoot + Easybeast method developed by tonymac, but there were a lot of things that irritated me. Restarting the virtual machine causes a kernel panic. Selecting 'About this mac' from Finder caused Finder to crash, and with it, all currently running applications. There was no sound output at all (not that important to me, but an annoyance just  the same). I thought I might be able to fix these problems by using VirtualBox's EFI emulation.

Then I remembered that Snow Leopard didn't initially run on Sandy Bridge machines. All the ones that shipped had modified versions of 10.6.7 installed. So I decided to combine installation strategies. I would configure VirtualBox to not use EFI and install using iBoot, upgrade to 10.6.8 (which supports Sandy Bridge), and then switch on EFI. This worked perfectly. Below are the steps for getting Snow Leopard 10.6.8 running in VirtualBox 4 using EFI emulation on your Sandy Bridge machine.

Requirements:
  1. iBoot 3 from tonymac (free, but forum registration required)
  2. 10.6.3 Snow Leopard install disc (other 10.6 install discs should work, but I haven't tested this).
  3. VirtualBox 4 (I'm using 4.1.4 on gentoo Linux amd64)
  4. Sandy Bridge core i machine (other machines may work, but I haven't tested this)
  5. Intel VT-x virtualization available and enabled in BIOS
  6. Patience (took me about an hour)
Installation Outline:
  1. Create virtual machine in VirtualBox.
  2. Boot machine using iBoot CD image
  3. Install Snow Leopard
  4. Use iBoot to boot into new Snow Leopard
  5. Update to 10.6.8 using Combo Updater
  6. Reconfigure VirtualBox for EFI
  7. Boot your new Snow Leopard EFI Virtual Machine
Step 1 - Creating the Virtual Machine

Start VirtualBox 4 and create a new machine. Name it whatever you like, but make sure operating system is Mac OS X and version is Mac OS X Server or Mac OS X Server (64 bit). The 64 bit version doesn't actually do anything useful from what I can tell. You don't need it to run Snow Leopard in 64 bit mode. I kept all the defaults for the basic configuration options (1 GiB memory, 20 GiB hard drive). It shouldn't affect anything if you change these, but I haven't tested that.

Edit the settings and go to the System settings. Make the CD/DVD-ROM first in the boot order list. You also need to uncheck Enable EFI. Then go to the Display settings. Set Video Memory to 64 MB and check Enable 3D Acceleration. On the Storage settings, you can select the iBoot ISO for the CD image. Everything else should be good like it is.

Step 2 - Booting using iBoot

Now that your machine is configured, it's time to start it. iBoot comes up very quickly. Once it does, you need to change the CD image to your Snow Leopard DVD. You can use the CD icon at the bottom of the VirtualBox screen to do this while the machine is running. Once you have swapped discs, press F5 so iBoot can detect the new disc. It should now display Mac OS X Install on the boot selection. Go ahead and press Enter to boot this.

Step 3 - Install Snow Leopard

Now the Snow Leopard install will begin. Occasionally, I have found that it might kernel panic sometime during this install. Usually it happens during the boot process, but sometimes it happens later on. If it kernel panics before it tells you it's going to reboot the machine itself, then you have to go back to step 2.

I'm not going to go into the details of installing Snow Leopard. It's pretty straightforward and there are plenty of other guides out there. The basic process is to partition the drive, format it as Mac OS X Extended (Journaled), then tell it to use that disk to install to. I would recommend hitting customize and removing all the optional components before hitting install, but it shouldn't make any difference if you don't.

At the end of the install, when it tries to restart, it will kernel panic. This is a problem we will fix later by turning on EFI, but it won't matter here. It's already done and was going to restart anyways.

Step 4 - Boot into Snow Leopard using iBoot

After the install kernel panics on restart, it's time to swap discs back to iBoot and reset the machine. VirtualBox will probably tell you that the drive tray is locked, but you can ignore that because the machine is locked up anyways.

After you reboot the iBoot CD, you will now have two options: iBoot and whatever you called your Snow Leopard partition (I named mine Snow Leopard). Select the Snow Leopard one and boot it up.

Step 5 - Update to 10.6.8

After you have gone through the first boot process and created your user, you will need to download the 10.6.8 combo update. Then you need to run it and perform the update. When it tries to restart the machine, it will kernel panic again. This time, you can just turn the power off on the virtual machine.

Step 6 - Reconfigure VirtualBox for EFI

Go back to the VirtualBox settings for your Snow Leopard machine. In the system settings, check the Enable EFI box and save the settings. Now close VirtualBox.

Open a terminal window (e.g. konsole, gnome-terminal, Terminal, cmd.exe) and enter the following commands.

VBoxManage modifyvm "XYZ" --firmware efi64
VBoxManage setextradata "XYZ" VBoxInternal2/SmcDeviceKey  "ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc"
VBoxManage setextradata "XYZ" VBoxInternal2/EfiGopMode 4

Replace XYZ with the name of your virtual machine. I called mine "Snow Leopard". The first one enables the 64-bit EFI firmware, in case you want to boot the 64-bit Snow Leopard kernel. You can still boot the 32-bit kernel using this firmware though.

The second line is hidden within the EFI of real macs as a form of DRM. If you don't have that data in the EFI, Snow Leopard won't boot with EFI.

The third line sets your graphics mode. There are 5 documented VirtualBox graphics modes for EFI. 0 = 640x480, 1 = 800x600, 2 = 1024x768, 3 = 1280x1024, and 4 = 1440x900. Since my monitor is running at 1900x1080, I'm using mode 4. You can leave this line out and it seems to default to 1024x768, which would be fine for most people.

Step 7 - Boot Snow Leopard using EFI

Now you can restart VirtualBox and boot Snow Leopard. You should remove the iBoot CD before you do this. You should now have a working Snow Leopard install in VirtualBox.

Final Notes

It should go without saying, but please buy the copy of Snow Leopard you install. It's only $30.

Updates should work perfectly since you're using a completely vanilla install, but I haven't tested this yet.

Sound is a little iffy. It works, but is not perfect. Sometimes sounds are silenced, sometimes crackly. You want perfect, use a real machine.

By default, Snow Leopard boots using the 32-bit kernel. I don't know if there are any benefits to booting the 64-bit kernel, but if you want to, you need to edit the /Library/Preferences/SystemConfiguration/com.apple.Boot.plist file. There is a Kernel Flags key. In the string value below it, you need to add arch=x86_64 and reboot. Now you will be using the 64-bit Snow Leopard kernel.

Sunday, October 17, 2010

TiVo Serial Null-Modem Networking on Windows Vista and 7

The original series 1 TiVo used a built-in modem to connect to the internet to download program guide and channel listings. A few years ago, I wanted to use my cell exclusively and get rid of my home phone service. To do this, and keep my TiVo, I would have to find another way for it to connect to the internet.

Fortunately, with version 3.0 of the TiVo software (the last update for the original series 1 TiVos), they added a feature that would allow you to use the serial port to connect either to an external modem, or use a null modem cable and bypass a modem entirely.

Connecting the TiVo to your computer to use its internet isn't difficult, but the process depends upon which operating system you run. This post will focus on the setup for Windows Vista/7. For Ubuntu Linux directions, you can read this post I wrote on the ubuntu forums. If you are on Windows XP, follow the directions listed here.

Windows 7 is very similar to the Windows XP setup, but there are some important differences which I want to talk about here.

So, before you begin, you will need four things.
  1. The TiVo serial cable. It should have been included with your TiVo. One end will have a 9-pin serial connector and the other end will have a stereo jack connector.
  2. A Null Modem cable. I think you need female->female, but you should check the ends and make sure they fit. I bought mine at a local electronics supply shop.
  3. A NAT router (any wireless router should work).
  4. A computer with a serial port (a lot of newer computers don't have them anymore - mine did). A usb->serial port should work, but I haven't tried this.
 Connect the TiVo serial cable to the Null modem cable. Plug the stereo jack into the TiVo in the serial port (NOT the I/R port) and plug the null modem cable into the serial port on your computer.

Start a command prompt with Administrator privileges. Change to the C:\windows\system32\DriverStore\FileRepository directory. Inside there, there is a directory that starts with mdmhayes.inf, and the rest will depend on which version of Windows 7 you have, so just use tab completion to switch into that directory.

We need to take ownership of this directory and the files inside it.

takeown /F mdmhayes.inf /A
takeown /F mdmhayes.PNF /A
takeown /F . /A

Note the dot (period) in the last one indicating the current directory.

Next we need to open this directory in Windows Explorer. Select the mdmhayes.inf directory inside C:\Windows\System32\DriverStore\FileRepository and edit the properties. You need to add Full Control permissions, either to Everybody or to Administrator.

Do the same thing for the two files mdmhayes.inf and mdmhayes.PNF inside this directory. Once you have done that, delete both files. I know that's a long process just to delete two files, so if you can figure out a better way, please let me know.

Now open the C:\Windows\Inf directory in Windows explorer. Delete the files mdmhayes.inf and mdmhayes.PNF from there as well. These files aren't guarded by Windows SYSTEM, so they're easier to get rid of.

Download the file mdmhayes.zip and unzip it to find a new mdmhayes.inf file. Copy this file into both directories (C:\Windows\inf and C:\Windows\System32\DriverStore\FileRepository\mdmhayes.inf_something).

Edit: DO NOT USE THE MDMHAYES.ZIP FILE ON 32-BIT WINDOWS 7. IT IS NOT THE RIGHT DRIVER AND WILL MAKE IT VERY DIFFICULT TO GO BACK TO THE RIGHT ONE. I WILL PUBLISH BETTER DIRECTIONS FOR 32-BIT WINDOWS 7 LATER (soon I hope).

Empty the recycle bin (we must purge the old copies or they will haunt us) and reboot Windows.

Now we can add our incoming connection. Open Control Panel and search for modem. Click on the Phone and Modem panel. Enter an area code if it asks for one. On the control panel, click the modems tab and click add modem. Check "Don't detect my modem; I will select it from a list". When it brings up the list, choose the "Communications cable between two computers". Select the appropriate COM port if more than one is available (COM1 is likely).

Click on Properties for the modem and set the max port speed to 115200. In the advanced tab, select Default Properties and set Flow Control to NONE.

Now we are ready to setup the incoming connection. Go back to Control Panel and search for Network. Open the Network and Sharing Center and click on Change Adapter Settings. Press Alt-F to open the file menu and select "New Incoming Connection". Select the communications cable between two computers as the connection medium and when you get to IPv4 settings hit properties and setup your IP addresses. I have never had it work by it trying to use DHCP, so ymmv. Try it if you like. On the Users page, make sure the Guest account is selected.

Now click on Properties for the Incoming Connection and click on the Users tab. Make sure Allows Allow Directly Connected Devices is checked. That's it on the computer side. Now let's go setup the TiVo to use the Null Modem connection.

On TiVo, go to Phone Settings, and under Dial Prefix, select ,#211 (that's COMMA, POUND, TWO, ONE, ONE). The rest of the settings shouldn't matter, as this prefix is used to tell TiVo we're using a Null Modem and therefore phone settings are irrelevant. Test out the new settings and see what happens. If a test call works, then try a daily call. If you followed the directions, it should all be up and working now.

One piece of troubleshooting advice: I've had some routers that wouldn't route addresses that are in the DHCP range if the DHCP server didn't give them out. You may need to use an IP range inside your subnet that's not part of the DHCP set. You'll have to look elsewhere for how to do this.

Most of this information was culled from two sources
http://www.b-lan.com/otto/tivo3xp/
http://www.sems.org/entry.asp?ENTRY_ID=187

The first are the directions for Windows XP. It also has screenshots and more information than I have listed here, so check if out if you need more information. The second page told me how to modify the process for Windows Vista/7. The idea about takeown to get access to the Windows DriverStore SYSTEM protected files came from google. Specifically, I forget. Sorry. Thanks whoever you were who suggested that.

Saturday, January 30, 2010

SSH is a versatile tool

I had no idea SSH was so versatile. I moved to a new apartment a few months back. It comes with shared internet service for the complex. The speed is decent; not what I was getting, but you get what you pay for, so I was more or less satisfied.

My first big problem was that I no longer had access to the router. This meant I couldn't forward ports to give me remote access to my machine. I'd read about VoIP services that had a failsafe for machines that couldn't directly connect. They would connect them both to a central server, and connect them together from there.

This is when I first learned about reverse SSH tunnels. I already knew about normal tunneling. I'd been using that for years to connect to VNC servers. Now I found out you could also use SSH to setup a reverse tunnel. You connect to a ssh server and create a tunnel back to your own machine. I tested it for awhile and it worked great. There's even a simple program to monitor the tunnel to ensure connectivity: autossh. Works great in tandem with gentoo keychain.

More recently, I stopped being able to go to my website from my apartment. I thought at first it was the server, so I contacted my provider. They said it was running the daily backup and they were planning to move to a newer machine soon. Over the next couple weeks, I noticed the problem never went away. Moreover, this problem only manifested from inside my apartment. Not from my work, or my parents, or any wifi hotspot I tried. When I talked to my web host about this, he suggested the problem may be reverse DNS lookup trouble. I think he's right, and I've sent this information to my apartment's internet support people. I hope they can fix it.

Coinciding with this problem, my laptop had an issue with the power supply and I had to deliver it to Best Buy for a replacement. During this time, I had to use a machine at work on a very restricted network. So I started looking into setting up a proxy server to get around the restrictions. I tried to install dante, but something in the configuration was never right, and I never got it to work. I was about to give up when I learned of another neat thing SSH can do. It can act as a SOCKS5 proxy. With the right configuration, all my web requests from firefox now went through my SSH proxy.

I got my laptop back from Best Buy, but I thought about the proxy idea again when I got home. This could be (at least temporarily) a solution to my networking troubles at home. Again, it worked perfectly. Until they solve the reverse DNS issue, I can at least connect through the proxy and have full access to my web server.

Hooray for SSH.

Thursday, March 12, 2009

Why Does Anyone Use OpenSolaris?

I was trying to help someone on the filezilla forums who uses OpenSolaris. They weren't too familiar with how to compile their own binary. Since OpenSolaris is free, I decided I would just download a copy, stick it in VirtualBox and try it out.

First of all, it looks nice, and all the vmware hardware seemed to work (more or less). The graphics driver seemed to be VESA based so my resolution was limited to 1024x768. Maybe the VirtualBox extensions would fix this.

Okay, my first gripe: The default installation doesn't come with any development tools. Okay, the whole thing did come on a single CD and includes Gnome, so I guess some stuff needs to be sacrificed, but the development tools? So I started Package Manager and looked for gcc. In comes my second gripe. Even though OpenSolaris is from Nov 2008, the gcc version they are hosting is 3.4.3. That's pretty old. Whatever, it should work for my needs.

There are several minor packages on which filezilla depends. It needs wxWidgets, libidn, libgcrypt, and gnutls. FileZilla depends on version 2.8 of wxWidgets, and the installer checks for the latest minor revision 2.8.9, but the package manager only had 2.8.8 (not as ancient as the gcc they're hosting, but still old). I couldn't find any of the other libraries. It also needs GNU gettext, but since I was able to run gettext and xgettext, I thought OpenSolaris came with that (more on that later).

Since I wasn't sure how to get around the FileZilla check for wxWidgets 2.8.9, I decided to build wxWidgets. Now we come to even more problems. wxWidgets seems to want to build the Motif version even though I got the wxGTK release. Oh, this must be because the gtk development headers aren't installed on OpenSolaris. BTW: I still can't find these. I saw a GTK package, but it's version 1.2. Who would use that these days? It's unsuitable IMO. Okay, we'll use the 2.8.8 package and figure out how to trick FileZilla later.

I was able to build libidn, libgcrypt, and gnutls without problem. That's about the only positive I ran into.

Since I can't figure out how to build wxWidgets since I can't find the gtk development package, I had to find a way to trick FileZilla into using the 2.8.8 version. First I decided to modify the configure.in script to accept version 2.8.8. When I first tried it, it ignored my changes. It didn't rerun autoconf for some reason. Oh yeah, it's not installed. Go back to Package Manager, and surprise, surprise, autoconf isn't one of the packages. Okay, well that solution won't work.

Let's tell wx-config to lie to FileZilla instead. Oh wait, there's no usable editor on this system. No nano, pico, or even emacs. I'm stick with vi. Since I have no idea how to use vi, I look at the graphical editor options and I find gedit. Okay, that will work, overkill that it is. BTW: nano isn't in the Package Manager either.

After telling wx-config to lie for us, FileZilla gives me a new error. We don't have dbus installed. Really I blame FileZilla for this. If dbus isn't available, it's configure script should disable support for it itself; we shouldn't have to pass --without-dbus on the configure line. Instead of trying to find dbus (which I'm already sure won't be found in package manager), I rerun with --disable-dbus.

On to the next error. Oh, msgmerge isn't installed. Apparently, gettext and xgettext are not from GNU gettext after all. So we need to go get that. I tried to build the 0.17 version from source and ran into some weird compile error. So I ran back to package manager and it had the 0.16 version, so I installed that. Finally, the configure script completes.

I have a quad core processor, so of course I use make -j5 to build. But no, we're not using GNU make. We're using Sun make, which doesn't support that option. So I'll just leave 75% of my CPU idling while it builds on a single core.

It quits with another cryptic message. One thing I noticed was that it said ld: fatal: library -lCstd: not found. Does this mean it can't find the C standard library? Well, that would be par for the course I guess.

If anyone has suggestions, I'm open to them. For now, I'm left with the question: Why does anyone use OpenSolaris?

edit: Someone mentioned that lCstd is the Sun CC C++ library, which is probably why it wouldn't work with gcc, but I'm not sure if that's right or not. It makes sense anyways.

I was able to find what I needed to build FileZilla. SUNWgnome-common-devel contains the GTK+ libraries. SUNWxwinc and SUNWxorg-headers are the X libraries and includes. SUNWgnu-idn was there all the time. Not sure how I missed it. Building wxWidgets and GNU gettext from source solved the rest of my problems. I put up a guide to compiling FileZilla under Solaris on the FileZilla wiki.