How to disassemble a Panasonic Toughbook CF-33 Mk1

Posting here because I couldn’t find any instructions online, and I figured it out. I use the CF-33 because it’s one of very, very few laptops with a daylight-visible display.

I opened up mine (a Mk1) was because my touchscreen went crazy – the mouse position jumped around, and the mouse clicked at random when it’s not supposed to. Disabling it in Windows only worked until the next boot – it re-enables itself (not supposed to, but it does).

[Note: I haven’t tried it, but I’ve read that disabling the touchscreen in “Panasonic PC Hub” works on some Toughbooks (I don’t know if it works on the CF-33). You might want to try that first if that’s your problem.]

So I wanted to disconnect the touchscreen by unplugging the internal cable – the machine also has a touchpad and I normally use a Bluetooth mouse anyway. Here’s how I did it, and how you can open up yours.

General tips:

1 – Don’t force anything.

2 – You can run the machine without batteries in it, and without the dock/keyboard – just plug in the AC cable. If you want to work it once the touchscreen is disconnected or without the dock, I suggest a USB mouse and/or keyboard (if you want both you’ll need a USB hub – without the dock there’s only one USB socket).

3 – I highly recommend using a set of JIS screwdrivers (not Philips). The screws look like Philips but they’re JIS which are slightly different and if you use a Philips screwdriver you can easily strip the heads. This is the best set I found at a reasonable price: https://www.amazon.com/VESSEL-precision-screwdriver-set-TD-56/dp/B000CED236 They’re Japanese made and incredibly good quality – $14.

4 – Try to avoid pressing the power button when fiddling with it while it’s running. Esp. if it starts a Windows Update and says “don’t turn off your computer”. I managed to press it, but it restarted the update on the next boot so I guess it’s not critical all the time. Or I was lucky.

5 – The CF-33 won’t display anything if the battery door is open. If it seems like it should be running and the battery door is open (or removed), that’s what’s going on.

6 – Put screws back in the holes they came from after removing parts. This will help you remember where they go.

Open the battery door, take out the batteries. It’ll look like this:

Inside the battery compartment (per that photo), there’s a small metal tab (looks like aluminum to me) held by one screw on the right, just 3/4 of an inch north of the right battery. That’s how the machine senses if the battery door is open. If that metal tab isn’t next to the sensor underneath (when the door is closed), the machine will run but the display will not operate. (The black plastic spring loaded plunger in the middle that looks like it has a switch to detect if the door is open has nothing to do with it. That is just there to push up the battery door once you unlatch it. It has no electronics.)

Remove the 3 sliver screws on the silver plate that covers the other side of the CF-33 and stick out into the battery compartment. Then you can take off the plate that covers the other side (not covered by the battery cover) of the CF-33. This is the silver outside plate that surrounds the back camera and says Panasonic and TOUGHBOOK on it.

At this point you’ll see a door that can be removed by taking out a bunch of screws. The door contains the rear camera. I don’t know if you need to remove it or not (I did). The purpose of the door seems to be to allow upgrades – under the door are two radios (cellular and Bluetooth/Wifi) and I think this is where the fingerprint reader goes (I don’t have one).

Once you get the door off, disconnect the rear camera cable by flipping up the black latch at the end of the cable by 90 degrees (these open at the end where the cable goes), to make it stand up from the PCB. Slide out the cable, put the black latch back down.

Next to the fan you’ll see a silver door with 3 screws – that holds the SSD. No need to mess with that (the SSD will be exposed in the next steps anyway).

Now remove the 4 silver bumper button things on the corners opposite the docking connector. (Two on each side of the machine.) You need a hex driver – I think it’s 2mm but I used a 3/32 inch and it mostly worked ok.

Next remove all the screws around the edges of the machine holding in the black plastic/rubber edges. Then remove the rubber edges – first from the short sides of the machine, then from the long sides (the order matters). Then remove all the screws around the perimeter of the machine. You also need to remove the two screws left and right of the fan (in deeper holes).

Once you get all those out, the cover should be loose around all the edges but stuck in the middle. It’s held by the SIM card socket. Take out the one screw holding the SIM card socket PCB and slide it out. Then you can take off the cover. (It’s possible if you don’t have a SIM card in there this isn’t necessary.)

Here’s what it looks like once you get the cover off:

Inside of CF-33

The touch screen cable is the little white one (about 5 or 6 contacts) that is perpendicular to the SSD. On the opposite side of the SSD from the fan. In the photo it says SUMITOMO on it.

Lift up the plastic protecting it (in the area with the blue marker in the photo) and flip up the black latch at the end of the cable by 90 degrees, to make it stand up from the PCB. Slide out the cable, put the black latch back down. If it takes much force you’re doing it wrong.

That disconnected the touch screen.

Now reassemble the whole thing in the opposite order.

Getting the mainboard cover on is tricky because (again) the SIM card socket is in the way. Don’t try to remove the plastic bracket – you don’t need to and it resists. Instead, remove the SIM card (if you have one in there), remove the one screw holding the PCB and put the cover on. Then slide the SIM PCB into place and replace the screw. Then put the SIM back in and close the little door.

There are 5 screws that are longer than the others. Two of these go thru the black plastic shell that holds the pen, then thru the smaller cover, then into the main machine. 2 more go on either side of the docking connector. I don’t know where the last one goes.

Once you get it all together everything works except the touch screen (which got disconnected). But the touchpad still works (as does any mouse you connect).

I hope this helps someone.

AoA sensor first prototype

I don’t see anybody selling an angle-of-attack sensor for FPV RC aircraft, so I’m making my own.

Here’s the first (quite crude) prototype:

AoA sensor prototype

It’s nothing more than a hall effect sensor inside a hollow tube (the black plastic spacer) with a magnet glued onto it. It’s held by the red plastic block with a hole drilled thru it.

The other end of the tube has a crude weathervane attached (the counterweight needs more work).

It seems to work reasonably well:

I’d feed the output into an ADC on a PIC.

The whole thing is too loosey-goosey for flight – this was just a prototype to see if the idea works.

Now I’m trying to figure out how to make a flightworthy version. Maybe this would be a good first 3D printer project?

Improved W4ZCB Latching Continuity Tester

Here’s a very simple low-voltage, low-current latching continuity tester circuit. The probe voltage is only ~ 49 mV and probe current is 1/2 mA maximum, so it’s safe for testing almost any board without risk of damaging something.

It’s a slightly improved version of Harold Johnson, W4ZCB‘s circuit published some years ago. (Not sure when; I found it here.)Improved_W4ZCB_Contunity_Beeper

R1/R2 and R3/R4 are voltage dividers; comparator U1 (an LM2903) turns on the beeper if the resistance between the probe leads is less than about 25 ohms.

I added C2 to make it latching; otherwise it’s very scratchy. The LM2903 is a smaller part than the original LM339, and I changed R4 from the original 10k ohms to 47k, to drop the continuity threshold from about 50 ohms to 25.

I used a TMB12A05 buzzer for LS1; these are available on eBay for about 20 cents each (quantity 10). Any small buzzer that buzzes by itself (with an internal oscillator) will probably work.

D1 and R5 just provide a power-on LED; you can omit them.

It’ll run on anything from about 3 to 15 volts (with the probe voltage about 1/100 of that); most any small-signal PNP transistor can be used for Q1.

This was drawn with DipTrace, which I’m experimenting with. So far I like it a lot – the user interface is far more intuitive than Eagle.

Webcam with privacy shutter & mute

Another business idea – this time a simple one.

Today the BBC has an article about “webcam hijackers” who blackmail people (mostly young women) with remote access trojans that grab webcam video.

I don’t get it. Why do almost no webcams come with a physical privacy shutter – just a sliding piece of plastic?

The right way to do this is a knob that turns a cam and slides a shutter in front of the lens.

It should have four positions:

  • Off – shutter blocks lens, cam opens a switch that electrically disconnects the microphone
  • Audio only – shutter blocks lens, cam closes mic switch
  • Video only – shutter away from lens, cam opens mic switch
  • On – shutter away from lens, cam closes switch

How hard is that, really?

 

Hey: VCs often say that good ideas are a dime a dozen. Mine go even cheaper than that. If you use this idea to make money, I’d like 0.5%. Of the equity in your company, or the profits. Or something. If that’s too much (or too little), fine – whatever you think is fair. This is a request for a gift, or reward – it is not a legal obligation. You’re free to use this idea and pay me nothing. If you can live with yourself that way.

Remove all comments from C and C++ source code

At the moment I’m struggling with Microchip’s new “Harmony” framework for the PIC32. I don’t want to say bad things about it because (a) I haven’t used it enough to give a fair opinion and (b) I strongly suspect it’s a useful thing for some people, some of the time.

Harmony is extremely heavyweight. For example, the PDF documentation is 8769 pages long. That is not at all what I want – I want to work very close to the metal, and to personally control nearly every instruction executed on the thing, other than extremely basic things like <stdlib.h> and <math.h>.

Yet Microchip says they will be supporting only Harmony (and not their old “legacy” peripheral libraries) on their upcoming PIC32 parts with goodies like hardware floating point, which I’d like to use.

So I’m attempting to tease out the absolute minimum subset of Harmony needed to access register symbol names, etc., and do the rest myself.

My plan is to use Harmony to build an absolutely minimum configuration, then edit down the resulting source code to something manageable.

But I found that many of Microchip’s source files are > 99% comments, making it essentially impossible to read the code and see what it actually does. Often there will be 1 or 2 lines of code here and there separated by hundreds of lines of comments.

So I wrote the below Python script. Given a folder, it will walk thru every file and replace all the .c, .cpp, .h, and .hpp files with identical ones but with all comments removed.

I’ve only tested it on Windows, but I don’t see any reason why it shouldn’t work on Linux and Mac.

from __future__ import print_function
import sys, re, os

# for Python 2.7
# Use and modification permitted without limit; credit to NerdFever.com requested.

# thanks to zvoase at http://stackoverflow.com/questions/241327/python-snippet-to-remove-c-and-c-comments
# and Lawrence Johnston at http://stackoverflow.com/questions/1140958/whats-a-quick-one-liner-to-remove-empty-lines-from-a-python-string
def comment_remover(text):
    def replacer(match):
        s = match.group(0)
        if s.startswith('/'):
            return " " # note: a space and not an empty string
        else:
            return s
    pattern = re.compile(
        r'//.*?$|/\*.*?\*/|\'(?:\\.|[^\\\'])*\'|"(?:\\.|[^\\"])*"',
        re.DOTALL | re.MULTILINE
    )
    
    r1 = re.sub(pattern, replacer, text)
    
    return os.linesep.join([s for s in r1.splitlines() if s.strip()])


def NoComment(infile, outfile):
        
    root, ext = os.path.splitext(infile)
    
    valid = [".c", ".cpp", ".h", ".hpp"]
    
    if ext.lower() in valid:
           
        inf = open(infile, "r")

        dirty = inf.read()
        clean = comment_remover(dirty)

        inf.close()
        
        outf = open(outfile, "wb") # 'b' avoids 0d 0d 0a line endings in Windows
        outf.write(clean)
        outf.close()
        
        print("Comments removed:", infile, ">>>", outfile)
        
    else:

        print("Did nothing:     ", infile)

if __name__ == "__main__":
    
    if len(sys.argv) < 2:
        print("")

        print("C/C++ comment stripper v1.00 (c) 2015 Nerdfever.com")
    
        print("Syntax: nocomments path")

        sys.exit()
        
    root = sys.argv[1]
    
    for root, folders, fns in os.walk(root):

        for fn in fns:
    
            filePath = os.path.join(root, fn)
            NoComment(filePath, filePath)
    

To use it, put that in "nocomments.py", then do:

python nocomments.py foldername

Of course, make a backup of the original folder first.

Why is computer RAM disappearing?

For almost 30 years, roboticist Hans Moravec has been maintaining a great database of historical computer benchmarks going all the way back to 1891 (even before Hollerith tabulators).

This can be used to make nice plots showing Moore’s Law like this one (source XLS here):

2015-06_Moravec_MIPS

 

But – here is something way more interesting.

The graph below plots, for each historical machine, the ratio of RAM (megabytes) to MIPS. So a machine with the same bytes of RAM as instructions/second rates as 1. One with 10x more bytes of RAM than instructions it can execute in a second rates as 10, etc.

I think of this ratio as “seconds” – if each instruction can access one byte, then the ratio gives the number of seconds needed to access all the RAM. (Of course this is a rough measure, as architectures differ, but good enough to give interesting results).

Here’s what I get:

2015-06_Moravec_Seconds

Look at that! 

These are real historical machines with the given installed RAM (not how much RAM the machine could address, but the amount the machines actually had installed).

I’m just plotting the ratio of installed RAM to execution speed – it has nothing to do with price (except insofar as price may have affected buying decisions).

The ratio of RAM to machine speed has been steadily dropping. Why?

I remember a rule of thumb, probably from the 1980s, that a practical computer typically has about 1 second of of RAM – that is, a typical machine is fast enough to access all its memory in about 1 second.

This made sense at the time based on the idea that, in a command-line driven system, one second was about as long as users were willing to wait for a response. Longer was too slow, and shorter didn’t gain much.

But this graph is illuminating. The only explanation I can think of is that with the gradual transition from batch computing (many minutes is an acceptable run time), to interactive command lines (seconds) to GUIs (tens or hundreds of milliseconds), the ratio of RAM to MIPS has been steadily dropping.

But if that’s correct, I’d expect more in the way of a step function.

I suspect it’s something else, and that it’ll keep going. Something more interesting. But what?

Hewlett Packard > Agilent > Keysight … WTF?

What a way to ruin a great brand. For no apparent reason at all.

They could have called it “Pewlett Hackard”. Heck, they could have called it “Tektronix”. (Those guys in Beaverton seem to have no use for that name anymore.)

The monkeys are running the henhouse. (Or, um, something like that.)


Oh, and…get off my lawn!

Saleae Logic Analyzer

I’ve had this thing in my drawer for 2 years; just got to use it for the first time yesterday.

It’s fantastic – really worth $150.

Saleae Logic Analyzer

Saleae Logic Analyzer

Now they have new versions that do analog, too (low-bandwidth, tho).

The nice thing about the Saleae thing is the software – it’s really amazingly simple and effective (you can download a demo from their website without the hardware).

I’ve used other logic analyzers – this is miles ahead. (Also way, way, better than the protocol decode on my new Rigol DS2072A DSO.)

https://www.saleae.com/logic

[No, they didn’t pay me anything to write this.]

Solar powered bike

I built a solar-powered bike. It works, but not quite as well as I’d hoped.

IMG_20130806_120725 copy

I started with a 2008 Currie “E-Zip Mountain Trailz” (sic; ugh) electric bike, which works pretty well.

That is powered by a pair of 12v 10AH SLA batteries, in series for 24 volts. I’ve always been afraid to ride for long distances for fear I’d run out of power before getting home. (The thing weighs 70 pounds, and I’m no athlete, so it’s painful to go up hills without power.)

I’d been thinking of putting solar panels on it to charge the batteries while I ride. I didn’t have any appropriately-sized panels around, so I didn’t do it until this summer, when I decided to try using a bike trailer to hold the panels.

The trailer solves the problem of the panels being shaded by my body when I ride, and also avoids problems with the weight of the panel hardware messing up the balance of the bike.

I have some 20 year old Siemens SM55 modules, rated at 55 watts (new, when pointed at the sun). These things are huge and heavy – 51 x 12 inches, and 12 pounds each (1300 x 330 mm, 5.5 kg). And since the eBike runs on 24 volts, I’d need 2 panels in series to charge the battery (at least without a DC-DC boost converter). That’s 24 pounds, not counting mounting hardware.

But, hey, with a trailer, who cares how much it weighs, right? And 110 watts is a lot of power – likely enough to completely power the bike while riding (on average, on a sunny day).

So I got a used bike trailer; $50 on Craigslist:

The bike trailer as I got it

The bike trailer as I got it (nylon roof & child seat removed)

I took off some of the trailer hardware to make it easier to mount the panels, and installed a plywood floor to make a storage compartment under the panels.

Then I used a couple of pieces of lumber to attach two panels together (at the ends), and mounted more lumber on the sides for mounting on the trailer. I cut slots to fit the trailer poles, and attached the panels to the trailer using standoffs and cable ties:

Cable tie straps hold the panels on

Cable tie straps hold the panels on

I also had to use more lumber to reinforce the trailer poles, which were only meant to hold a nylon sunshade (not 30+ pounds of panel hardware).

I was going to get a 24v charge controller to avoid putting too much voltage into the batteries, but I haven’t gotten around to that – I just wired the output of the panels (in series) parallel with the 24V battery; good enough for now.

Solar panel output wired in parallel with the battery

Solar panel output wired in parallel with the battery

"Watts-Up" meter is just used as a voltmeter. The venerable Garmin GPS V is also powered off the 24v system.

“Watts-Up” meter is just used as a voltmeter.
The venerable Garmin GPS V is also powered off the 24v system.

Finally, I made a bumper sticker to go on the back of the panel; it reads “CAUTION – HIGH CURRENT STAND BACK 500 MM” (just visible in the last picture below, if you zoom in). I figured that would keep the ignorant from messing with the bike (and it fits my skewed sense of humor).

So, how does it work?

It works. Mostly, sort of. As long as I’m riding in full sunlight I can go indefinitely if the road is level or not too steep.

I tried a test run riding to work – about 12 miles – on a sunny day.

I weigh nearly 220 pounds, the bike is 70 pounds, and the trailer with the panels is something like another 50 pounds. So the whole setup is maybe 350 pounds. That’s too much for the motor to pull up a steep hill without a lot of help from me.

I got to work OK and not too tired, in about 90 minutes (about 8.2 mph average – not at all impressive by road bicyclist standards). I did have to work my way up hills.

At work I got delayed and ended up going home close to dusk. I started out riding in the shade. Halfway home, I had a dead, dead battery and about 7 miles still to go. And 350 pounds to drag up each hill. After mighty struggles, I gave up and called for a ride home.

A week or so later, I tried the same trip on a light steel street bicycle (about 20 pounds, with narrow smooth tires and no suspension – in other words, efficient).

I got to work again in about the same time, only slightly more tired than with the electric bike. With the vastly lighter and more efficient bike, going up hills with that was no harder than with the solar bike (with the motor helping). And I was able to get home with no problem.

In the end, a simple street bike turned out to be just as fast, not much more effort to ride, and way more practical – it even works in the shade.

But it was fun to try.

CAUTION- HIGH CURRENT. STAND BACK 500 MM

CAUTION- HIGH CURRENT STAND BACK 500 MM