Followup: VGA RFI via KVM

Following up on my last post, the interference recurred and I got pictures.  I was watching a YouTube video here.  My resolution is 1600×900, below the native resolution for this LCD for reasons I’ve gone over before.  This example has a regular sine-wave like quality with what appears to be at least two frequency components.

And browsing Flickr:  Though there are considerable moiré artifacts in this shot (the purple and green patches—ignore them, the screen is fine), the RFI shows up nicely in the “From” text, particularly the F.

I’ll have an update when I get my filter parts in a few weeks.  I’ll bet there are a number of people with KVM’s who may have seen symptoms like these and not realized it.


IOGear GCS-634 Teardown

I’ve been having some RFI problems lately with my computer setup at home.  I run my workstation and server through a IOGear GCS-634 USB KVM connected to a Dell 2309W display, a Logitech Marble Mouse and a USB keyboard.  This KVM is a four-input model that switches USB, VGA and audio between computers;  two of the KVM cables are hardwired to the unit, the other two (which are included with the KVM) are optionally connected to the unit.  I use two of the four inputs and use the others when I occasionally fix a computer on the bench.

I wasn’t certain I would find the problem just by opening up the KVM, but I seldom have the opportunity to take apart even my own electronics and I always take pictures when I do.

This is the bottom of the box.  The screws are under the outside corners of the rubber pad in the center.

The circuit board:

The component side of the board:

I wonder if this is a JTAG port on the right?

I’m still looking for the RFI.  At first I suspected a ground loop between my workstation and server as they are on different outlets and probably different circuits;  whenever National Grid drops a phase to my building feed, only my workstation or my server will go dead or reboot, usually not both at once.  However I’ve disconnected the server from the KVM and the interference still persists.  I’ve measured between the ground frames of the two machines and I see no significant voltage, AC or DC, between the two (A 1V difference would be enough to warrant remediation in a typical installation.)  I changed out the power cord on the server since I tend to reuse older cords—no change.  I ran without the KVM for a few days and no RFI.

It only happens when the workstation is switched in on the KVM and does not appear on the server’s KVM display.  It shows up as vertical waviness;  when I play games, the interference is most pronounced on vertical lines and features, especially at the lower resolutions of the old games I tend to play.  This points to RFI in the vertical sync line of the VGA output.  You can actually see the vertical jitter on the screen at a frequency of around 5 to 30 Hz as it surges up and damps down.  I had it happen while I was writing this post but it damped down just as I got the camera.

My VGA card, an eVGA GeForce GT-240, may just be unusually susceptible to RFI.  It seems like it’s ringing.  I wish Tek let me take their scope home the other day—I would have found the answer tout suite!  I have an idea for fixing this based on an RS-232 metal dongle shell, VGA connectors, ribbon cable, caps and beads, that I will try when I get a chance.


ESC 2010: Hands on with Tektronix

I went to Embedded Systems Conference again this year.  Unlike last year, I didn’t get to see any interesting teardowns, but I saw some things that made up for it.

There were booth ladies at XJtag.  Again.

2.4 GHz remotes demonstrated by Microchip, using RF4CP:

The tether is just for theft prevention—there is no IR emitter on this remote.  Don’t ask me what happens when your Bluetooth, 2.4G cordless, WiFi and microwave are all in the same room as they are in my apartment.

The high point of ESC was the day after the exhibits when Tektronix held a seminar featuring hands-on training on their mixed-signal digital oscilloscope.  My personal test instruments belong in a museum and I have never used a digital scope, though I’m familiar with the technology.

Apologies for the poor cell phone photo.  The BNC jacks have familiar analog 10X probes, while the digital probe set plugs into the middle of the front panel.  This scope had 4 analog channels and 16 digital channels.  We plugged the scope into a special demo board that makes “bad” signals with various defects that users are trained to figure out both in the analog and the digital realms.  My partner and I got through the two sessions without breaking anything and we both learned something about digital and serial bus troubleshooting.  If my partner reads this, I’m sorry I went too fast for him;  I have never used this scope but I wasn’t hesitant a bit to push buttons and turn dials.

I can dream about affording this scope for another day.

I did come home with some goodies:

Microchip contributed most of the items in the photograph;  you can see their CD’s and chip sample card.  Micrium was handing out a thick book on real-time OS (RTOS) technologies.  Interestingly, Microchip has some sort of marketing agreement with Energizer, the bunny battery people.  There are AA, AAA and AAAA batteries and an LED pen light.  Plus a Dell yoyo that’s supposed to light up but doesn’t.  I usually share this stuff at the SATV offices, but I always keep flashlights for myself!.

And a commemorative lapel pin from Energizer, featuring their titular pink bunny, “KEEP GOING”.

I always say I will get more involved with embedded work;  I have a collection of dev kits I have seldom used, because they either didn’t do what I was interested in or they cost too much to get working.  I’d love to find a dev kit with Ethernet that I could justify for a micro web server or preferably a NTP clock with a GPS module.  They’re getting cheaper.

I had a good time as usual and I appreciated the break from my usual work.  Especially the scopes.


More Old Text-Mode Games

Following up on my post about the old computers I used, I’ve found quite a few references to old text-mode games, and a great site on computer emulation.

Even today, you can write text-mode games:  Understanding C#:  Using System.Console to build text-mode games.  Since Powershell is based on .NET, you could just as easily write a few simple games in that scripting language as well.

A tribute to DOS text-mode:  Why Text Mode Games Are Cool.

Some online computer systems, with some old classics:  Freaknet Computer Museum On-line Systems.

All about Star Trek, the classic computer game:  Wikipedia entry on Star Trek, the text game. 

I co-owned a Tandy CoCo after high school and Dennis Kitsz wrote what I thought was the greatest version of that game ever at the time.  Dennis wrote this after seeing Star Trek II, the favorite Trek film of many fans, and his version was a quick-paced, frenetic game that captured the essence of that movie very well.   There are emulators around for that platform, though I haven’t tried any of them, and I would love for the game to still be around.

Finally, a great site on computer emulation, and one of the few sites in my research that is still current:  Fun With Virtualization.


Fixing the DLL Preloading Vulnerability with Group Policy, the right way!

Microsoft has recently released a patch to address a well-publicized vulnerability in Windows where programs can load “bad” DLL’s from a WebDAV or SMB share.   However, you need to create a new registry entry to modify Window’s behavior on DLL loading and close the hole.

The new registry entry is CWDIllegalinDllSearch, and there is more information, and a Fix It tool, on Microsoft’s Security Research and Defense blog.  Susan Bradley rightly points out that their advice is not really suitable when there are numerous PC’s in the network, especially when they are all managed by Group Policy.  She mentioned a solution involving Group Policy Preferences.

It’s not often I can keep up with Susan, but I have figured out how she’d do it!  We’ll make a new Group Policy Preference with the required registry settings.  This preference could be applied to the default domain, but I have chosen to limit it to client machines, so it will be created for the SBSComputers OU. 

  1. Preconditions:  All your PC’s must have Group Policy Preferences installed;  this is standard for Vista and higher, but available as an update for XP SP3.
  2. They must also have KB2264107 installed first.  Do it now if you haven’t already.
  3. Open the Group Policy Management Console, select your domain, and go through the OU tree until you reach SBSComputers.  
  4. Right-click, select “Create a GPO and link it here”.
  5. Pick a name, “DLL Preloading Vulnerability Prevention”.  Click OK.
  6. Find the GPO you just created and right-click it.  Select Edit.
  7. In the GPO editor, select Computer Configuration/Preferences/Windows Settings/Registry.
  8. Right click the Registry item and select New/Registry Item.
  9. In the window shown below, to the right of the Key Path item box, click the […] button.

10.  Select SYSTEM/CurrentControlSet/Control/Session Manager.  Do not open any subkeys under Session Manager.  Click Select.

11.  Enter the new value name, CWDIllegalinDllSearch.

12.  Enter the value type, REG_DWORD.

13.  For value data, enter 2.

14.  Click OK.

15.  Close the GPO Editor, and the GPMC console.

If you wish, you can refresh the GPO settings at each client by doing a gpupdate /force

The “default” setting of 2 for CWDIllegalinDllSearch blocks DLL loading from Webdav and SMB’s.  There is a more restrictive setting that blocks DLL loading from USB devices.  For that, you would select the Hexadecimal radio button in the dialog above and enter FFFFFFFF.  Until I know how this affects the system I am sticking with the defaults.  It occurs to me that if you have techs who troubleshoot with thumb-drive utilities, this may break them.  Just so you know.

There are other ways to implement this in Group Policy;  one method I have seen involves creating a new GP template with the registry settings.  I think  GP Preferences are the better way to go as, with a custom template, the registry settings are "tattooed" (this is the official GP nomenclature) onto the machine’s registry and remain there even if the policy is removed.  I like to have a clean machine with transparent settings, even though this setting will be permanent through the life of Windows.

Thanks for the hints, Susan!


Reliving My High School Computing Days

 

I’ve been spending the summer exploring some old computers.  The last old computer I owned was a DECMate II which had both a PDP-8 CPU—and a Z80—so I could run either CP/M (Z80 side) or OS/278 (PDP-8 side). 

At Salem High in the early ‘80s, where I was a student, we had a DEC PDP-11/60 with eight terminals running RSTS/E.  Digital was a big industry in Massachusetts and it was enormously influential.  In some ways, it still is, as many practices and conventions came from them and many famous systems were developed and refined on PDP machines (Unix being the most famous example.)

The program listing above is a systems program I wrote—I was fascinated by system internals even then!  It retrieves several system tables and prints out the name and unit number of each disc mounted on the system.  Yes, it is in BASIC.

I cannot power or even run an 11/60 at home if I could get one, but there is a simulator, SIMH, that will run PDP-8, PDP-10, PDP-11 and many other systems.  And there are disk images available for many of the OSs that ran on those processors, including some early Unices.   I’ve used a number of DEC OSs, but RSTS/E was my first and favorite.

I used SIMH to configure my simulated 11/60 more or less just as it was in high school.  I downloaded some manuals from bitsavers.org and built a system.  I booted it up from the Windows command prompt, entered a date (I applied a Y2K patch for RSTS/E that I found online) and I was running my RSTS system just like I would when I was a volunteer system operator in high school, getting a staffer to open the door to the computer room so I could turn the machine on with a key.

System programming on RSTS/E is interesting.  It is in BASIC.  Despite that, RSTS/E was a very popular OS in its day and had some features that are common today.  Its boot loader had a sort of hardware autodetect that Windows 95 would later have.  It came with emulation layers (“run-time systems”) so it could run programs for some of DEC’s other operating systems like RMS-11, RT-11 (a very popular OS for “small" PDP-11’s.  Salem High had two such systems), and RSX.

I can’t go through the whole listing above, but I’ll mention just a few lines:

CHANGE SYS(CHR$(6%)+CHR$(-3%)) TO Ml%

The SYS() function is the main way that BASIC system programs send function calls for dispatch.  CHR$ is a familiar BASIC function that produces the ASCII character corresponding to the numeric code.  (This predated Unicode.)  CHANGE, in RSTS BASIC-PLUS, changes a string to a corresponding numeric integer array (or the reverse).  This system call gets one of the monitor tables, a 30-byte table.  There is another call further on to get the second set of monitor tables.

The program then walks through the disk device table to get each mounted volume.

D$=CVT%$(SWAP%(PEEK(M2%(5%)+C%)))

This line gets the disk device name;  CVT%$ converts integers to strings.  PEEK works like the identical function on most microcomputer BASIC’s, except that it reads only monitor (system) memory and not other processes.  The PDP-11 is a byte-addressable but word-oriented CPU so there is a function to SWAP bytes, just as you would see in assembler.

I wrote this program almost 30 years ago.  Does it still run under my emulated system?

Pretty much.

DL0 is my system disk named DMSYS, it has a cluster size of 2, it is “PUB" or public, disk (devices can be reserved for users, these are private.  The system disk is public by definition.)   RSTS/E writes the date of last modification to directories (“DLW”) rather than files to the disk

The other thing I did besides write systems programs was writing and playing arcade-game adaptions for VT52 terminals, most notably a clone of Pac-Man that was extremely well received amongst my cronies in the computer room.  My friends and I were the computer game factory of Salem High, coming back from the arcades and trying to figure out what games we could get going.  We came up with some surprisingly good clones, considering our technical limitations (text graphics, no controllers and no sound.)

Unfortunately, I don’t have any printouts of Pac-Man or the other games we wrote.  I have seriously considered recreating these games;  I’ve been appalled at how quickly 30-year old knowledge comes back to me after only a few days.  Tera Term, the terminal program I use, has a faithful VT100 emulation that replicates our old VT52’s for all intents and purposes.  Who knows?

Here’s a brief video of me playing Star Trek, a classic game of the day, on my PDP-11/60:

 

 

I’ve had a lot of fun revisiting computer history.  Perhaps I will recreate those games of ours…