Cisco: Disabling CiscoPro only sofware loads

Introduction

Based on what I understand, CiscoPro was Cisco’s attempt at selling routers with crippled OS loads with discounts through resellers. It was the case in the late 90s, and certain models of routers (100x, 25xx, 45xx, 16xx) were available in the olive green of Cisco, and in white. White boxen were the CiscoPro variety, and would only run so called “CiscoPro” featuresets only. By IOS release 11.2 Cisco abandoned that practice, and offered a way to convert all existing CiscoPro routers into routers that would accept standard Cisco IOS load.

Hardware-wise both CiscoPro white boxes and reguar Cisco boxes in olive green are identical, and the only difference is in the non-volatile memory.

As most CiscoPro units still in the field have been converted, I’ll try to document what needs to be done to a CiscoPro router to make it happier, and potentially useful. As it happened, I got my hands on two Cisco routers with white paintjob – CPA2503 (sh ver below) and CPA2520, which correspond to Cisco 2503 and 2520.

Basic Idea

Expect CiscoPro router to have much less flash and RAM then Cisco lists as standard for the model in question. If this is a router you will use for CCNA tests, do shell out some money for flash and RAM upgrades, as they will be necessary to run versions of IOS that you can test on.

Grab the aproprite upgrade file from ftp://ftp-sj.cisco.com/pub/access/ and a copy of the upgrade image. For CiscoPro CPA25xx routers you need cpa25-up.bin.

Configure the route so it can talk to your tfpt server (DO password recovery if needed, it’s on Cisco web site), back up existing IOS, copy the cpa-25-up.bin into the flash of the router, and get it to reboot with that image. cpa25-up.bin will modify the non-volatile memory to remove the CiscoPro only requirement, and which point you can boot from the ROM, and flash in a modern IOS (or at least IOS that you backed up initially).

Step by Step procedure for Windows users

If you boot up a Cisco, and at “sh ver” it shows the following:

SDN-Link>sh ver
Cisco Internetwork Operating System Software
IOS (tm) 3000 Software (CPA25-Y-L), Version 11.1(24), RELEASE SOFTWARE (fc1)
Copyright (c) 1986-1999 by cisco Systems, Inc.
Compiled Mon 04-Jan-99 20:00 by richv
Image text-base: 0x030206C0, data-base: 0x00001000

ROM: System Bootstrap, Version 5.2(8a), RELEASE SOFTWARE
ROM: 3000 Bootstrap Software (IGS-RXBOOT), Version 10.2(8a), RELEASE SOFTWARE (fc1)

ISDN-Link uptime is 2 minutes
System restarted by power-on
System image file is "flash:cpa25-y-l.111-24.bin", booted via flash

cisco CPA2500 (68030) processor (revision F) with 2048K/2048K bytes of memory.
Processor board ID 04595024, with hardware revision 00000000
Bridging software.
X.25 software, Version 2.0, NET2, BFE and GOSIP compliant.
Basic Rate ISDN software, Version 1.0.
Authorized for CiscoPro software set only.
1 Ethernet/IEEE 802.3 interface.
2 Serial network interfaces.
1 ISDN Basic Rate interface.
32K bytes of non-volatile configuration memory.
4096K bytes of processor board System flash (Read ONLY)

Configuration register is 0x2102

ISDN-Link>

You have on your hands an affected router that needs some tender loving care.

For starters, expect that CiscoPro router will have minimum DRAM and flash. Cisco states that they shipped 2500s with 8 megs of DRAM and Flash. As you can see, this 2503 has only 4 megs of each. DRAM for 2500 is simple – it’s standard 72pin PC RAM, so if you have a 16 meg, single sided, it will work. Flash is much harder to obtain, and folks like MemoryX want ~80 USD for a 16 meg kit.

2500 platform is limited to 16 megs of flash and 16 megs of DRAM, but that would allow you to run IOS 12.3.16, which is the latest at the time of this writing. In other words, with over a million 2500s in the field, they will be supported for a while longer.

Next, you need to get yourself a PC with Windows. I did my upgrade under Windows 2000, although you might get away with a Unix/MacOS X box with tip, minicom, ZTerm.app, etc.

Under Windows you need to get yourself a copy of Cisco RSL (Router Software Loader) from ftp://ftp-sj.cisco.com/pub/access/ and a copy of the upgrade image. From the Cisco FTP site I grabbed cpa25-up.bin and RSL 7.11.

Then I configured the console cables so I could talk to the router over hyperterminal. In process I needed to do password recovery (drop to bootrom, set the confreg to 0x2142, reboot, say no at the original config) on one of the routers. I’ve used Cisco TFTP server for windows that ships with RSL (look for installer in the RSL711 directory) to back up the cpa25-xxxx.bin IOS loads, as they are hard to find and fit in 4 megs of flash requirement that I currently have. I also had to look around, and find an even older firmware image for 2500 that would fit into flash. At http://www.tfr.org/cisco-ios/ I grabbed router-2500-serial.bin which is IOS ™ 3000 Software (IGS-I-L), Version 10.3(5), RELEASE SOFTWARE (fc1). Of course 2500 and 3000 are basically the same router, so it was a fair deal.

I created a directory “images” in RSL711 directory, and dropped cpa25-y-l.111-24.bin that I recovered from the router, router-2500-serial.bin that I grabbed from above site, and cpa25-up.bin

Then I disconnected HyperTerminal, and started RSL. RSL found my 2503, queried it, and asked me what IOS image I’d like to run on it. I pointed at the IOS 10.3, at which point RSL told me that I need to rename cpa25-up to a different name, as it can’t find it. I renamed cpa25-up.bin to what it asked me, and told RSL to continue. It went on for a while occasionaly looking , and about 5 minutes later it told me that it is done.

NOTE: Tell RSL to NOT back up any files. That’s why you backed up IOS as the first step. If you do tell it to back up, it will not finish running and just sit there, because it is expecting somewhat different prompts then what IOS on my routers was offering it.

I shut RSL down, and connected to the router over hyperterminal. It was happily running IOS 10.3(5). At that point I’ve started Cisco TFTP server again, and flashed in original IOS (You can use RSL for that too, it will work. Again, no backups, as you already did them).

So after a RAM upgrade, and this convoluted procedure I were left with:

Router#sh ver
Cisco Internetwork Operating System Software
IOS (tm) 3000 Software (CPA25-Y-L), Version 11.1(24), RELEASE SOFTWARE (fc1)
Copyright (c) 1986-1999 by cisco Systems, Inc.
Compiled Mon 04-Jan-99 20:00 by richv
Image text-base: 0x030206C0, data-base: 0x00001000

ROM: System Bootstrap, Version 5.2(8a), RELEASE SOFTWARE
ROM: 3000 Bootstrap Software (IGS-RXBOOT), Version 10.2(8a), RELEASE SOFTWARE (fc1)

Router uptime is 0 minutes
System restarted by power-on
System image file is "flash:cpa25-y-l.111-24.bin", booted via flash

cisco 2500 (68030) processor (revision F) with 16384K/2048K bytes of memory.
Processor board ID 04595024, with hardware revision 00000000
Bridging software.
X.25 software, Version 2.0, NET2, BFE and GOSIP compliant.
Basic Rate ISDN software, Version 1.0.
1 Ethernet/IEEE 802.3 interface.
2 Serial network interfaces.
1 ISDN Basic Rate interface.
32K bytes of non-volatile configuration memory.
4096K bytes of processor board System flash (Read ONLY)

Configuration register is 0x2102

Router#

And everything was well in the world…

Cisco: Cisco 26xx/36xx network module compatibility.

Short story

NM-2E anything nor any NM-XFE will work in Cisco 2620. This includes NM-2E2W, NM-1FE, NM-2FE, etc. Same with HPPI and HSSI cards. Here is a list of supported NMs.

To me this looks like a deliberate crippling of 26xx platform just to convince people to buy bigger boxes, because NM-4E is supported under 2620, so in NM-2E2W it’s not a backplane speed issue.

Long story

I ended up with a Cisco 2620 handed to me. It came with only a single WIC slot populated with WIC-1DSU-T1, so it had an empty NM slot, and an empty second WIC slot, plus built in 10/100 FastEthernet port.

I figured that I have three NM-2E2W interfaces in my Cisco 3640, yet I am only using 4 uplinks, so I should just move one NM-2E2W to the 2620, turning it into a mean routing machine, with 3 ethernet interfaces, plus a serial interface. Then I could cross-connect 2620 and 3640 over serial, and use HSRP or something fancy, or, if worst comes to worst, just sell 3640 – I can get away with just 3 interfaces.

So I transfered NM-2E2W to the 2620.

It booted up, and I saw a curious syslog message:

00:00:08: SERVICE_MODULE(Serial0/0): self test finished: Passed
00:00:09: %PA-2-UNDEFPA: Undefined Port Adaptor type 30 in bay 1
00:00:13: %LINK-3-UPDOWN: Interface Serial0/0, changed state to down

That’s weird, I thought. I got distracted, however, as I had to drop to rommon, change config register to 0x2401, write a new config file in to the router, etc. But sh ver was showing me only

cisco 2620 (MPC860) processor (revision 0x102) with 61440K/4096K bytes of memory.
Processor board ID XXXXXXXXXXX (XXXXXXXXX)
M860 processor: part number 0, mask 49
Bridging software.
X.25 software, Version 3.0.0.
1 FastEthernet/IEEE 802.3 interface(s)
1 Serial network interface(s)
32K bytes of non-volatile configuration memory.
16384K bytes of processor board System flash (Read/Write)

which is not exactly useful as I generally use ethernet, and short of doing something fancy, like dot1q, router in it’s current state is not that functional.

I remembered times from debugging Cisco 7204s at Cyberus, where different IOS loads would recognize different PAs. 2620 had a c2600-ik9o3s3-mz.123 load that was a few years old, so I figured that maybe I need a new IOS. No problems, a recent security advisory provided me with an excuse to call up TAC and ask for new IOS.

When calling TAC in case like this, one has to be aware that TAC will only offer a like for like update. In other words, if you have 12.0.x, you will get a 12.0.Y image, where Y > X, but still, same feature set, same IOS revision. Makes sense, as I am not a paying customer.

Basic concern for me was to get an IOS load that has 3DES support. 3DES support means SSH capable load. Sadly, Cisco is in the States, which has a somewhat silly law about encryption being more dangerous then nukes. Luckily the image on the router was already with the right features. So I called up TAC, spent about 2 hours on hold with them, talking to their wonderful people. I like TAC – they talk to me, even though I don’t have a support contract.

End result was that they gave me links to download c2600-ik9o3s3-mz.123-15b.bin and c3640-ik9s-mz.123-16.bin .
I’ve attempted to load the former onto the 2620, however there was a disappointment – Cisco’s latest and greatest is a few hundred K larger then the 16meg flash I have in 2620:

c2620#sh flash

System flash directory:
File  Length   Name/status
  1   11072164  c2600-ik9s-mz.122-17a.bin  
  2   309208   crashinfo_19930301-000024  
[11381500 bytes used, 4871428 available, 16252928 total]
16384K bytes of processor board System flash (Read/Write)

c2620#
stany@gilva:/private/tftpboot/works[11:29 PM]$ ls -la c2600-ik9o3s3-mz.123-15b.bin 
-rw-r--r--   2 stany  501  16303356 Sep 15 20:49 c2600-ik9o3s3-mz.123-15b.bin
stany@gilva:/private/tftpboot/works[11:30 PM]$ 

Way to go Cisco!

No, problems, if this load would recognize my NM-2E2W, I will tftpboot it each time.
I dropped to rommon, set a bunch of variables, and did tftpdlnt.

On my MacOS X box I did:

root@gilva:/private/tftpboot[11:36 PM]# ln ~stany/c2600-ik9o3s3-mz.123-15b.bin test.bin
root@gilva:/private/tftpboot[11:36 PM]# /usr/libexec/tftpd -d -s /private/tftpboot/
root@gilva:/private/tftpboot[11:37 PM]# netstat -an | grep *.69
udp4       0      0  *.69                   *.*                    
udp6       0      0  *.69                   *.*                    
root@gilva:/private/tftpboot[11:37 PM]# 

On the Cisco I dropped into rommon by pressing break on the boot-up, and checked that my settings made sense:

rommon 1 > set
PS1=rommon ! >
IP_ADDRESS=192.168.82.249
IP_SUBNET_MASK=255.255.255.0
DEFAULT_GATEWAY=192.168.82.254
TFTP_SERVER=192.168.82.161
TFTP_FILE=test.bin
TFTP_VERBOSE=2
?=38
RET_2_RTS=19:08:22 EST Sun Feb 28 1993
RET_2_RCALTS=
CRASHINFO=flash:crashinfo_19930301-000024
BSI=0
RET_2_RUTC=0
rommon 2 >

All tftpdlnd cares about are valid IP_ADDRESS IP_SUBNET_MASK DEFAULT_GATEWAY TFTP_SERVER and TFTP_FILE. TFTP_VERBOSE can be set to 0 (no verbosity), 1 (somewhat verbose, default) and 2 (tell me everything).

test.bin is a reasonable name for the file – it’s short and easy to type.

Once I verified that everything was in order, I proceeded to download the image and executing it in memory (-r option). This is, BTW, a very useful way of testing IOS images, when you have something in flash that you know works, and you don’t have space for multiple images on flash. This way you can test new image, knowing that a power-cycle will get rid of it.

rommon 2 > tftpdnld -r

         IP_ADDRESS: 192.168.82.249
      IP_SUBNET_MASK: 255.255.255.0
     DEFAULT_GATEWAY: 192.168.82.254
         TFTP_SERVER: 192.168.82.161
           TFTP_FILE: test.bin

Performing tftpdnld over Fast Enet.
Interface is operating at: 100Mbps/HALF DUPLEX
Initializing interface.
Interface link state up.
ARPing for 192.168.82.161
ARP reply for 192.168.82.161 received.  MAC address 00:0d:93:42:2a:96
Receiving test.bin from 192.168.82.161 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!.!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
File reception completed.
program load complete, entry point: 0x80008000, size: 0xf8c3e0
Self decompressing the image : ########################################################################
#######################################################################################################
######################################################################################## [OK]

Smart Init is enabled
smart init is sizing iomem
  ID            MEMORY_REQ                 TYPE
000094          0X000B3B80 C2600 Single Fast Ethernet
00001E           UNKNOWN port adapter
                0X00098670 public buffer pools
                0X00211000 public particle pools
TOTAL:          0X0035D1F0

If any of the above Memory Requirements are
"UNKNOWN", you may be using an unsupported
configuration or there is a software problem and
system operation may be compromised.
Rounded IOMEM up to: 4Mb.
Using 6 percent iomem. [4Mb/64Mb]

              Restricted Rights Legend

Use, duplication, or disclosure by the Government is
subject to restrictions as set forth in subparagraph
(c) of the Commercial Computer Software - Restricted
Rights clause at FAR sec. 52.227-19 and subparagraph
(c) (1) (ii) of the Rights in Technical Data and Computer
Software clause at DFARS sec. 252.227-7013.

           cisco Systems, Inc.
           170 West Tasman Drive
           San Jose, California 95134-1706



Cisco Internetwork Operating System Software
IOS (tm) C2600 Software (C2600-IK9O3S3-M), Version 12.3(15b), RELEASE SOFTWARE (fc1)
Copyright (c) 1986-2005 by cisco Systems, Inc.
Compiled Thu 25-Aug-05 13:39 by ssearch
Image text-base: 0x80008098, data-base: 0x81A13C28


This product contains cryptographic features and is subject to United
States and local country laws governing import, export, transfer and
use. Delivery of Cisco cryptographic products does not imply
third-party authority to import, export, distribute or use encryption.
Importers, exporters, distributors and users are responsible for
compliance with U.S. and local country laws. By using this product you
agree to comply with applicable laws and regulations. If you are unable
to comply with U.S. and local laws, return this product immediately.

A summary of U.S. laws governing Cisco cryptographic products may be found at:
http://www.cisco.com/wwl/export/crypto/tool/stqrg.html

If you require further assistance please contact us by sending email to
export@cisco.com.

cisco 2620 (MPC860) processor (revision 0x102) with 61440K/4096K bytes of memory.
Processor board ID XXXXXXXXXXX (XXXXXXXXXX)
M860 processor: part number 0, mask 49
Bridging software.
X.25 software, Version 3.0.0.
1 FastEthernet/IEEE 802.3 interface(s)
2 Serial network interface(s)
32K bytes of non-volatile configuration memory.
16384K bytes of processor board System flash (Read/Write)

Uncompressed configuration from 1579 bytes to 2531 bytes


Press RETURN to get started!

Still no NM-2E2W!

I telnetted into Cisco, and did sh diag:

c2620#sh diag | beg 88 00
          0x30: 88 00 00 00 00 01 24 01 FF FF FF FF FF FF FF FF

Slot 1:
        Unknown (type 30) Port adapter
        Port adapter is disabled 
        Port adapter insertion time unknown
        EEPROM contents at hardware discovery:
        Hardware revision 1.2           Board revision E0
        Serial number     18783769      Part number    800-01171-05
        FRU Part Number:  NM-2E2W=

        Test history      0x0           RMA number     00-00-00
        EEPROM format version 1
        EEPROM contents (hex):
          0x00: 01 1E 01 02 01 1E 9E 19 50 04 93 05 00 00 00 00
          0x10: 70 00 00 00 00 02 29 17 FF FF FF FF FF FF FF FF


c2620#

In other words, it sees the NM-2E2W, just refuses to deal with it.

Argh!

Eventually, after more googling, I discovered this useful document, that tells me that cisco 2620 is a piece of crap, unless I spend a fortune on NM-4E. Argh.

DYLD_LIBRARY_PATH

Anyhone has any clue why vast majority of the dynamic linkers out there (Solaris, Linux, BSD etc) all use LD_LIBRARY_PATH variable to specify where to load dynamic libraries from, yet Darwin/MacOS X uses DYLD_LIBRARY_PATH?

*grumble*

Compiling Alladin GhostScript 8.51 from source. It’s not hard, just quirky. Oh, and jpgsrc-6 and zlib-1.2.2 both need a config.sub from a recent package for configure to recognize Darwin/MacOS X.

Motorbike vs. Car

dAVE is complaining that all I write are boring technical articles, without any human touch. So the folowing is an experiment in blogging about “human” issues. Wish me luck…

Sunday night I were coming home, and noticed that the corner of Bronson and Gladstone was blocked off – in some directions a block away. Being curious, I wandered out there, and saw half the intersection closed off by “Do Not Cross” tape, lots of police, a car stopped half way through, and a motorcycle laying on it’s side.

From chatting with the bystanders, I learned the following:
A woman driver, going from west to east on Gladstone run a red light, and was hit by a motorbike going south to north on Bronson.
Bike rider was supposedly alive when he was taken to the hospital by an ambulance, but his right knee was totalled by a bike falling onto it.

In Soviet Russia bikes had roll cages. Even motorollers had leg protection. Statistics are against bikers – biker will fall at some point. However in North America bikes are considered to be a macho thing – people ride basically in shorts and tshirts, often without helmets.

I am as pro auto-darwination, as the next guy, however think of the police and ambulance workers that will have to scrape you off ashphalt – at least wear leather coat and pants, to keep the pieces together. Have roll cages – have you thought of the nurses? Do you know how bloody hard it is to bandage someone who has a smashed knee cup? Why make someone remember you with a curse, as you are moving on in the world?

*sigh*

As an aside, again, in Soviet Russia some bikers tended to wear really narrow thin knee high riding boots. They were a sort of indicator – during death body would relax, so quite often boots would fall off, no matter how tight fitting they were. In fact rescue/ambulance workers used that as an indicator to see if they should attempt to hospitalize a victim, or if they das alles tod.

(Above photos are licensed under licensed under the Creative Commons Attribution NonCommercial ShareAlike License v.2.5. If they make someone think before running a red light, I’ll be happy).

Shellscripts: Using ANSI colors or finding duplicate files in style

… or “ASCII stupid questions, get a stupid ANSI”….

I’ve been writing Evil Shell Scripts of Doom[tm] lately, got curious in highlighting parts of the output in different color.
As both Terminal.app and xterms in Apple shipped X11 support ANSI colors, it made sense to me.

There are excellent How to Change a Title of an Xterm and Bash Prompts HOWTOs out there, to which I’ll refere my gentle reader, and thus I will just paste some example code.

Bits that directly relate to ANSI color output are all the echo -e lines, with basic logic being that echo -ne “e[1;35m” turns ON purple color, and echo -ne “e[0;m” turns it off. Of course other numeric values will generate different colors, and colors will look different on different terminals. Please refere to HOWTOs above.

Please make sure that you BOTH understand what this does, and undertand that YOU are responsible for running this. If it breaks, you get to keep both pieces, and not cry in my shoulder. The following is copyright 2005 Stany, and is licensed under… *shrug* BSD 2 clause license, in hope that this will be useful to others

(This is just some internal code that in reality just externalizes a function out of a much larger script, however might be of use to others without revealing what exactly I were working on. Note that it will leave an md5sum.out file behind, and will generate a script called “killfile” to remove duplicate if they were detected. This script doesn’t do many sanity checks, as they were job of a larger script, and will barf if subdirectories are present and matched. )

#!/bin/bash
# Checks for duplicates.  Takes one argument (optional) of the file ending,
# eg: checkdupe.sh pdf
# $Id: checkdupe.sh,v 1.2 2005/09/06 06:56:11 stany Exp stany $
MD5SUM=/opt/gnu/bin/md5sum
BASENAME=`basename $0`

checkdupe()
{
for ii in *$1 ; do
        FILESUM=`$MD5SUM $ii | awk '{print $1}'`
        NUMFILES=`grep $FILESUM md5sum.out | wc -l`
        if [ $NUMFILES -gt 0 ]; then
                OTHERFILE=`grep $FILESUM md5sum.out | awk '{print $2}'`
                 echo -e "e[1;31m`date` $BASENAME: e[1;36m$ii e[1;32mis a duplicate of e[1;35m$OTHERFILE e[0;m"
                echo "rm $ii" >> killfile
        else
                $MD5SUM $ii >> md5sum.out
        fi
done
}

if [ -e killfile ] ; then
        rm killfile
fi

if [ -e md5sum.out ] ; then
        rm md5sum.out
fi
        touch md5sum.out

checkdupe $1

if [ -e killfile ] ; then
        echo -e "e[1;31m`date` $BASENAME: Duplicates found.  Run killfilee[0;m"
        echo -ne "e[1;35m"
        cat killfile
        echo -ne "e[0;m"

fi


Sample run:

stany@gilva:~[02:58 AM]$ mkdir test
stany@gilva:~[03:04 AM]$ cd test/
stany@gilva:~/test[03:04 AM]$ echo a >foo 
stany@gilva:~/test[03:04 AM]$ echo a >bar 
stany@gilva:~/test[03:04 AM]$ echo b > baz
stany@gilva:~/test[03:04 AM]$ ../checkdupe.sh 
Tue Sep  6 03:04:45 EDT 2005 checkdupe.sh: foo is a duplicate of bar 
Tue Sep  6 03:04:45 EDT 2005 checkdupe.sh: Duplicates found.  Run killfile
rm foo
stany@gilva:~/nature/test[03:04 AM]$ ls
bar             baz             foo             killfile        md5sum.out
stany@gilva:~/nature/test[03:04 AM]$ 

Oh, and checkdupe() can be trivially fixed so that it would take any shell expandable expression as an argument to the script, and work with that. I don’t even consider it an excercise 😛

MacOSX: Trimming fat from Mach-O fat files

MacOS X uses fat files.

A fat bundle contains data for different architectures. Here are some examples:

root@gilva:/Applications/Utilities/Terminal.app/Contents/MacOS[02:03 AM]# file *
Terminal: Mach-O fat file with 2 architectures
Terminal (for architecture i386):       Mach-O executable i386
Terminal (for architecture ppc):        Mach-O executable ppc
root@gilva:/Applications/Utilities/Terminal.app/Contents/MacOS[02:03 AM]# 

or even:

stany@gilva:/System/Library/Frameworks/Accelerate.framework/Versions/A[02:07 AM]$ file Accelerate 
Accelerate: Mach-O fat file with 3 architectures
Accelerate (for architecture i386):     Mach-O dynamically linked shared library i386
Accelerate (for architecture ppc):      Mach-O dynamically linked shared library ppc
Accelerate (for architecture ppc64):    Mach-O 64-bit dynamically linked shared library ppc64
stany@gilva:/System/Library/Frameworks/Accelerate.framework/Versions/A[02:07 AM]$ 

In order to operate on fat bundles Apple provides a utility called lipo.

If you are in a situation where you are limited by processor architecture – for example, if you never expect to use internal hard drive of your iBook in firewire target mode to boot up an i386 system – it is possible to remove the extra “fat” from fat binaries, to save some disk space.

Here is an example:

root@gilva:/Applications/Utilities/Terminal.app/Contents/MacOS[02:09 AM]# mv Terminal Terminal.bak 
root@gilva:/Applications/Utilities/Terminal.app/Contents/MacOS[02:10 AM]# ls
Terminal.bak
root@gilva:/Applications/Utilities/Terminal.app/Contents/MacOS[02:10 AM]#lipo Terminal.bak -remove i386 -output Terminal
root@gilva:/Applications/Utilities/Terminal.app/Contents/MacOS[02:10 AM]# ls -la 
total 2296
drwxrwxr-x   4 root  admin     136 Sep  6 02:10 .
drwxrwxr-x   7 root  admin     238 Aug 31 00:07 ..
-rwxr-xr-x   1 root  admin  386472 Sep  6 02:10 Terminal
-rwxrwxr-x   1 root  admin  783784 May 14 22:22 Terminal.bak
root@gilva:/Applications/Utilities/Terminal.app/Contents/MacOS[02:10 AM]# file *
Terminal:     Mach-O fat file with 1 architecture
Terminal (for architecture ppc):        Mach-O executable ppc
Terminal.bak: Mach-O fat file with 2 architectures
Terminal.bak (for architecture i386):   Mach-O executable i386
Terminal.bak (for architecture ppc):    Mach-O executable ppc
root@gilva:/Applications/Utilities/Terminal.app/Contents/MacOS[02:10 AM]#

A quick test confirms that Terminal.app continues to run as before, however to make sure that everything is kosher I would probably want to correct permissions on the new binary to match what it was on the original.

Disk space saving will not be big, as an average .app consists of many other objects besides the executable itself, so this is probably not a very big issue. If one tries to remove a non-existing architecture from a binary, lipo will complain:

root@gilva:/Applications/Utilities/Terminal.app/Contents/MacOS[02:18 AM]# 
lipo Terminal.bak -remove ppc64 -output Terminal
lipo: -remove ppc64 specified but fat file: Terminal.bak does not contain that architecture
root@gilva:/Applications/Utilities/Terminal.app/Contents/MacOS[02:19 AM]#

Another interesting option to lipo is -detailed_info:

stany@gilva:~[02:22 AM]$ lipo -detailed_info /System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate 
Fat header in: /System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate
fat_magic 0xcafebabe
nfat_arch 3
architecture i386
    cputype CPU_TYPE_I386
    cpusubtype CPU_SUBTYPE_I386_ALL
    offset 4096
    size 8488
    align 2^12 (4096)
architecture ppc
    cputype CPU_TYPE_POWERPC
    cpusubtype CPU_SUBTYPE_POWERPC_ALL
    offset 16384
    size 8564
    align 2^12 (4096)
architecture ppc64
    cputype CPU_TYPE_POWERPC64
    cpusubtype CPU_SUBTYPE_POWERPC_ALL
    offset 28672
    size 8488
    align 2^12 (4096)
stany@gilva:~[02:22 AM]$ 

writing a script that processes the output of:

 find . -type f  -perm -55 -exec file {} ; | grep i386 | sed 's/.for arch.*$//g'

while stripping out the arch, AND not screwing up the system is left as an excercise for the reader. 😛

Rendering a manpage

This is more of a general unix hint, that is not really MacOS X specific.

If you have a manpage that you want to look at, that is not in $MANPATH, (Something that got installed by hand into a custom directory, for example something that was built and installed using
./configure –prefix=/opt/packagename && make install ), yet you know where it is (for example because you did run /usr/libexec/locate.updatedb as root at least once since and now can use locate), you can use nroff to render the man page into text:

stany@gilva:~[12:06 AM]$ ls -la /opt/gnu/man/man6/figlet.6 
-r--r--r--   1 root  501  21054 Sep  3 17:41 /opt/gnu/man/man6/figlet.6
stany@gilva:~[12:06 AM]$ nroff -man /opt/gnu/man/man6/figlet.6 | head -20
FIGLET(6)                                                            FIGLET(6)



NAME
       FIGlet - display large characters made up of ordinary screen characters


SYNOPSIS
       figlet [ -cklnoprstvxDELNRSWX ] [ -d fontdirectory ]
              [ -f fontfile ] [ -m layoutmode ]
              [ -w outputwidth ] [ -C controlfile ]
              [ -I infocode ] [ message ]


DESCRIPTION
       FIGlet prints its input using  large  characters  (called  ``FIGcharac-
       ters'')made  up  of  ordinary  screen  characters (called ``sub-charac-
       ters'').  FIGlet output is generally reminiscent of the sort of  ``sig-
       natures''  many people like to put at the end of e-mail and UseNet mes-
stany@gilva:~[12:06 AM]$ 

QuickTime (Part 3)

Background

I have an iBook G4, that has a 32 meg Radeon 9200 mobile video card, that is below the minimal requirements for CoreImage. Technically CoreImage is supposed to be scalable, and if it can’t do a particular efffect on the video card GPU, it should try doing it on AltiVec unit of the processor, and, in event that the system lacks an AltiVec unit, it should fall back to the CPU.

In reality lack of CoreImage support doesn’t cramp one’s style all that much. I miss some graphical features of the GUI, which is cosmetics. However, occasionally it interferes with productivity, and pisses me off.

Consider the following example:

QuickTime 7 Pro and video adjustments

QuickTime have been coming in “free” and “pro” variety for a long while. The features that 29.95 USD Pro version has are numerous, but amongst the most notorious are:

  • ability to save some of the streamed media to hard drive
  • ability to export files to different formats
  • ability to do some rudimentary merging of video tracks using cut and paste
  • ability to adjust brightness, tint, contrast and colors of the video
  • ability to correct audio balance, etc.

All of the above features work reasonably well under QuickTime Pro 6.5.2, although color corrections are rather clunky and are represented as a slider on screen. However you can see the adjustments as the movie plays. Here is what it looks like (220K).

Tiger came with QuickTime 7, and once I entered the QT7Pro license key, one of the things that didn’t work on my iBook was color corrections. Apple-K presented me with options to modify the audio settings, but not the video settings.

Technically you can get video adjustments to work by performing the following steps: Export -> Options -> Video Filter and doing a bunch of adjustments there, however there is no fun in waiting for a few minutes in order to see if your guesswork was correct.

This is Broken[TM].

So I did some digging. Inside QuickTime Player.app there are two files: AvControls.nib and AVcontrolsMinimal.nib. One gets used when the system detects CoreImage supported video card, and the other one when it doesn’t.

My hypothesis was that if I were to swap the two around, I’ll get access to video controls:

First I copied QuickTime Player to a different directory, and then dropped to command line:

stany@gilva:~[05:11 PM]$ cd /Applications/extras/QuickTime Player.app/Contents/Resources/English.lproj/
stany@gilva:/Applications/extras/QuickTime Player.app/Contents/Resources/English.lproj[05:11 PM]$ ls -dal AV*
drwxrwxr-x   5 root  admin  170 Jun  5 08:09 AVControls.nib
drwxrwxr-x   5 root  admin  170 Jun  5 08:09 AVControlsMinimal.nib
stany@gilva:/Applications/extras/QuickTime Player.app/Contents/Resources/English.lproj[05:11 PM]$ 
stany@gilva:/Applications/extras/QuickTime Player.app/Contents/Resources/English.lproj[05:14 PM]$ sudo /bin/bash
Password:
root@gilva:/Applications/QuickTime Player.app/Contents/Resources/English.lproj[05:14 PM]#  
mv AVControls.nib AVControls.nib_ && mv AVControlsMinimal.nib AVControls.nib && mv 
AVControls.nib_ AVControlsMinimal.nib
root@gilva:/Applications/QuickTime Player.app/Contents/Resources/English.lproj[05:14 PM]#

After adjustment, on a non-CoreImage enabled system Apple-K menu looked like this.

Sadly, under Tiger the sliders for video correction still do not work, as they are dependent on CoreImage. However, I wonder if they do work on Panther (10.3). If they do, then likely this is the solution that would work for folks who haven’t upgraded yet. You see, there might be a reason to be a struggler. Comments, please.

Lastly, I wanted to give my modified version of QuickTime Player.app a different version string, so that I could see it when I ctrl-click on the movie, and select “Open with”. In order to do that, I ctrl-clicked on the QuickTime Player.app, and selected “show package contents”. Inside Contents folder, I’ve opened version.plist and Info.plist in Property List Editor. In Info.plist Root, I’ve changed CFBundleGetInfoString so that I know it was changed by me when I get info on the application, CFBundleShortVersionString and CFBundleVersion both to 7.0.1-stany and saved Info.plist. In version.plist I’ve modified CFBundleShortVersionString and CFBundleVersion to match the changes I did in Info.plist, leaving the rest of the properties the same.

Now, If I ctrl-click on a file QT recognizes, and scroll to “Open with”, it looks like this.

Last paragraph is the usual step needed to change a version of any application as recognized by the operating system. I should probably do something like this to all of those pesky Real Players, that I’ve been dealing with.

In closing, inside Info.plist it’s also possible to adjust the filename extensions and the icons that QuickTime is supposed to be able to handle. So you can rename your .mp3 files to, say, .jd, and associate just QT with these files (Barring presence of resource fork, etc, of course).

QuickTime (part 2)

Another braindump.

Somehow I ended up at PBS Nova Science Now page. It had lots of shiny TV goodness that I wanted to watch. Of course there also was a warning on the page saying This program is not available for downloading due to rights reasons.. Rights. Right.

First restriction was trivially bypassed. Netblock I am using is registered in Eugine, Oregon (which has a funny side effect that some web sites insist on hooking me up with “hot girls in Eugine”), which is actually correct, as I lease this /24 from it’s american owner.

So as far as PBS was concerned, I were tax paying merkin, and thus can be permitted to watch their programming (produced by taxpayer money). I can’t verify it right now, however I believe that they out right don’t permit folks connecting from outside US to view videos. *sigh* By the way, BBC does the same thing to some of their on-line content.

So QuickTime video was happily streaming off their web page. Due to pecularities of my network setup, that lead me to believe that they use HTTP protocol for content delivery. I viewed source, and grabbed http://www.pbs.org/wgbh/nova/sciencenow/video/nsn-wrap-new.mov (Feedback please. Does it play in your browser when you click this link?) , which when played in QT quickly sent me to http://www.pbs.org/wgbh/nova/sciencenow/video/rights_restrictions.gif. Right. So it plays from inside the browser, streaming, but not from HD. Joy, PBS.

Eventually I gave up and sniffed traffic ( tcpdump -i en1 -s 0 -w cookie ; strings cookie ). Noticed the following insteresting file: http://www.pbs.org/wgbh/nova/sciencenow/video/3204-new.xml (Sorry, not a hyperlink, as I want you to copy/paste it, thus this post not ending up in referer field – it might raise questions, as it’s not meant to be accessed by a browser).

It refers to a bunch of .mov files, that the program consists of, plus the “captions” for each part of the main movie.

Groovy.

wget --user-agent="QTS (qtver=7.0.1;cpu=PPC;os=Mac 10.4.1)" http://www.pbs.org/wgbh/nova/sciencenow/video/3204-new.xml

wget --user-agent="QTS (qtver=7.0.1;cpu=PPC;os=Mac 10.4.1)" http://www.pbs.org/wgbh/nova/sciencenow/video/3204-00-ref.mov 

This one is another container file. I had to save it and strings on it, to figure out the main file name. It is available in two qualities: 3204-00-300.mov and 3204-00-56.mov

so

wget --user-agent="QTS (qtver=7.0.1;cpu=PPC;os=Mac 10.4.1)" http://www.pbs.org/media/wgbh/nova/sciencenow/video/3204-00-300.mov

worked.

root@gilva:~/pbs[04:27 AM]# grep vidURL 3204-new.xml |sed 's/ref.mov/300.mov/g ; s/^.*http/wget --user-agent="QTS (qtver=6.5.2;cpu=PPC;os=Mac 10.4.1)" http/g ; s/< .*$//g ; s//video//g ; s/wgbh/media/wgbh/g' 
wget --user-agent="QTS (qtver=6.5.2;cpu=PPC;os=Mac 10.4.1)" http://www.pbs.org/media/wgbh/nova/sciencenow/3204-00-300.mov
wget --user-agent="QTS (qtver=6.5.2;cpu=PPC;os=Mac 10.4.1)" http://www.pbs.org/media/wgbh/nova/sciencenow/3204-01-300.mov
wget --user-agent="QTS (qtver=6.5.2;cpu=PPC;os=Mac 10.4.1)" http://www.pbs.org/media/wgbh/nova/sciencenow/3204-02-300.mov
wget --user-agent="QTS (qtver=6.5.2;cpu=PPC;os=Mac 10.4.1)" http://www.pbs.org/media/wgbh/nova/sciencenow/3204-03-300.mov
wget --user-agent="QTS (qtver=6.5.2;cpu=PPC;os=Mac 10.4.1)" http://www.pbs.org/media/wgbh/nova/sciencenow/3204-04-300.mov
wget --user-agent="QTS (qtver=6.5.2;cpu=PPC;os=Mac 10.4.1)" http://www.pbs.org/media/wgbh/nova/sciencenow/3204-05-300.mov
root@gilva:~/pbs[04:27 AM]# 

Now, these don't play in stand-alone QT and refer you back to the "Rights" image. However VLC will happily play them.

*sigh*

I am going to bed now.

QuickTime (Part I)

Note: This is just a quick braindump, so probably is inconclusive, and makes no sense

Situation

A few days ago LIVE8 concerts were held in major cities around the world. Most interesting (to me, YMMV, of course) was the reunion of Pink Floyd after over 10 years of not being around, with Roger Waters being on stage with the rest of the classic lineup for the first time in 24 years. Wow.

AOL has the license for the internet distribution of the videos, and has a reasonably nice site from which the clips can be streamed using QuckTime.

Clips are really good quality, where quality of the video was not sacrifised in favor of bandwidth. Thank you, AOL, you rock.

If one clicks on the little tab by the song name, a window pops up in which clip plays. One can view source, search for “mov”, and eventually find http URL to the actual file. So I grabbed the 4 Pink Floyd songs.

Problem

When I proceeded to play them in QuickTime, they played great. But every silver lining has a cloud – I wanted to build a playlist, where the songs would be played in sequence.

iTunes kind of helped – I am not a big iTunes user, but I imported .mov files into it, made a playlist, arranged them in sequence, and it kind of worked. There were two snags, however – there were ~2 second gaps between songs, and it was audio only. Grumble. I wanted something that could just play them all.

I could have used VLC.app, I guess. I just verified that it plays these tracks, and it has the concept of playlist down pat. But instead I fired up QT Pro 6.5.2, selected whole video, and wanted to paste it together with the next song, etc, to merge 4 songs into one 20 minute long video.

Of course nothing happened. QT had the copy and paste controls grayed out.

So I attempted to export it. It popped up a window telling me Couldn’t export “‘Breathe’ (LIVE 8)” because this movie doesn’t allow saving. Aaaarrrgggh!

Aimless wandering in the dark, searching for solution

So fater about half an hour of googling I learned that many others run into this problem. Seems like this “feature” of QuickTime got noticed when certain movie trailers (ST: Nemesis is one, apparently) were exported to QT with “do not allow modification” bit set. This had the added benefit of forbidding QT Pro to save the file to HD, and irked some folks to no end.

Hacker’s Guide to QuickTime (Which actually has lots of rather useless pointers, such as “open web page with QT component in browser, and then find the cached file in browser’s cache to save file to HD”, which doesn’t work as most of the time now browser just loads a small file (example) that in turn loads the rest of the content, if it feels like it, or folks actually deploy QuickTime Streaming Server, and browsers generally don’timplement RTSP protocol) mentions that:

Video editing programs like Cleaner allow authors to save movies in such a way that further changes to the movie are disallowed. When the author saves the movie, he simply enables the “disallow saving” check box. Some filmmakers chose to do this to prevent others from altering their work. Others chose this option to discourage users from making local copies of movies viewed online.

So this had a glimmer of hope: If I were to obtain the right software, I could make a small (2 – 3 seconds) source file, import it into video editing package, tell it to save once without disallowing saving, and once with, hexdump both files, and diff them. My stipulation is that it’s just a byte or two in the header, that QuickTime happily follows. If I were to know which ones, I potentially could just hexedit the restriction out, and solve my problem.

At this point for some reason I got diverted, and instead of investigating “Cleaner”, went and grabbed Sorenson Squeeze 4.1. Site e-mailed me confirmation and the above URL to the download package.

Sorensen Squeeze is VISE X packaged blob of data that has 30 day free trial, and that will watermark generated files (until you license it). I didn’t care about watermarking, as as long as it generates both protected and unprotected file identically, it’s not a big deal. I know save restriction doesn’t encrypt the file, as VLC.app happily plays them back.

After playing with Sorensen for a while, I realized that a) It does a rather poor job converting other QT files to requested form at(frame dropping. Gave it an 80K/sec mpeg4 inside QT container file (La Tortura from one of my earlier articles), and told it to generate 750K/sec result. Result had 8 frame/sec output, and was choppy as heck (source was 16 frames/sec). Maybe it’s another restriction of the 30 day demo) and b) I couldn’t find the menu to disable save in Squeeze’s features nor in documentation.

At this point I gave up in disgust, and uninstalled Sorensen Squeeze 4.1.

Another complaint about VISE X. Why the F*&^ does it demand that all other applications must be closed during uninstall of software? It demanded none such thing during install. I am not about to close Safari with 35 windows, nor X11 with 8 xterms. Aaargh, what a piece of crap. MS Media Player for Mac is also packaged with it, and in that case it actually demands admin password just to install an application into /Applications. WHY?

So this is as far I made it.

Questions

  • Is there a way to extract files from VISE installers, specifically out of Install.data, without running the installer? I always fear that it will spew files all over my system, and I’ll never find them.
  • Any advice about “Cleaner”? Admitedly I am reluctant to put this here, as I’m yet to google it.
  • Anyone has any experience dealing with QT restrictions?