Jump to navigationJump to search

The GM-45 is a good, bare-bones radiation detector from Black Cat Systems. It is a detector only and needs to be attached to a computer or counter. The communication interface is RS-232 and reading data from it is super easy -- I've written a Geiger counter app in one line of Bash script.

GM-45 Specifications

Size: 5.3 by 3.4 by 1.5 inches (135 by 86 by 38 mm)

Weight: 9.3 ounces (264 grams)

Window: Mica, 1.75 mg/cm2 1.75 inch / 44.5 mm diameter Minimum allowed atmospheric pressure: 540 torr (8,000 ft altitude)

Radiation detected: Alpha: above 3 MeV, Beta: above 50 keV, Gamma/X-Ray: above 7 keV

Power requirements: Self powered from computer

Computer Hardware Requirements: USB version: USB port, Serial versions: serial port

Computer Software Requirements: Windows 98/2000/NT/XP/Vista/Windows 7, Macintosh MacOS 7.6 to 9.2, OSX 10.1.2 or later

Software Features: Built in graphing; Ability to store data to disk for further analysis; User selectable integration times; Built in statistics package; Trend line may be superimposed over graphed data; "Geiger Counter" clicking may be enabled

Package includes: GM-45 Unit; CD-ROM with software for both Windows and Macintosh; Appropriate serial cable - please order the correct version for your system, three are available: 1. Windows with 9 pin serial port, 2. Windows with 25 pin serial port, 3. Macintosh with 8 pin serial port

GM-45 Performance:

Gamma Energy Response
Gamma Energy Response

Reading data from a GM-10 or GM-45 radiation detector

The GM-10 and GM-45 are radiation detectors made by Black Cat Systems. These devices are Geiger-Müller counters. They count ionization events. Every time an alpha or beta particle or a gamma photo zips through the chamber the device will transmit a byte over its RS-232 output port. You just need to read the output and count the bytes. Note that the value of the byte is meaningless. You just need to count the fact that a byte of any value has been transmitted.

  • Serial port settings: 57600 8N1 (57600 baud, 8 data bits, no parity, 1 stop bit).
  • Set the DTR line high (DTR = 1). This is usually automatic, but if this is not done for some reason then the device will not receive power. It taps power from the DTR line.

The GM10 and GM45 come in RS-232 and USB versions. I chose the RS-232 version because I use Linux exclusively, so it was important to me that these devices work with Linux. The USB version will work with Linux, but not as easily as the RS-232 version. I decided that the RS-232 version made more sense because:

  • I already own several FTDI FT232 based USB-to-RS232 converters that work great every RS-232 device I have tested.
  • the USB versions of the GM10 and GM45 cost $50 more.
  • the USB versions of the GM10 and GM45 are basically the RS-232 versions with a built-in FT232 converter.
  • the FT232 converters in the USB GM10 and GM45 have custom USB VID number and PID number, so the Linux ftdi-usb-sio device driver does not recognize the serial device by default! Argh! This means you have to patch and recompile your device driver.
  • the RS-232 version seemed more hackable because Black Cat systems provides details on how to interface directly to the GM-10 and GM-45 signal lines available right through the RS-232 port. Basically, the RS-232 version just conditions the internal amplifier signals to be compatible with RS-232. There is no hand-shaking or wire protocols to deal with. You could basically hook up a battery and an LED to the GM-45 to blink for each ionization event. You can't do that with the USB version.

The weird thing about my GM-45 is that I received it in the mail on Friday March 11th, 2011. That was the day the Japanese Fukushima Nuclear Reactors were damaged by a tsunami and suffered a core meltdown. After that the Black Cat Systems had a rush on all their radiation detectors... For the record, I've detected no significant increase in background radiation in San Francisco, California. (And yes, I know that's not how one would detect fallout from Fukushima anyway, but people keep asking me.)

The Black Cat Systems GM-45 is probably the most sensitive and most cost effective radiation detector you can find for under $400. I strongly recommend it. The quality of the device is good and the sensitivity is amazing. If you tried to buy research laboratory grade equipment with detectors this good then you would be spending much more. The Black Cat Systems devices also have decent documentation and support. The only device that I've found that comes close is the International Medcom Inspector Alert. This device costs almost twice as much as the GM-45; it doesn't include software; it has little technical documentation; and it has zero Linux or Mac support. I have no firsthand experience with their products.

See also the gm4lin-ng project. I didn't use this because it seemed like it didn't give me much that I couldn't do myself just by opening the serial port and counting bytes.

World's simplest Geiger Counter program -- one liner Bash shell script Geiger counter

You can interface to a GM-45 Radiation Detector and log ionization events using only a shell script. This is hardly even a shell script. It's just a couple commands;`stty` is used to setup the serial port; and a shell loop is used to log date-time stamps when a byte is available on the serial port. Each ionization event prints a date-time stamp. A beep or click is played using the `amixer` and `beep` commands (remove those lines if you don't have `amixer` or `beep`).

stty -F /dev/ttyUSB0 raw ispeed 57600 ospeed 57600 cs8 -ignpar -cstopb -echo
# Print the speed:
stty -F /dev/ttyUSB0 speed
# Print GM-45 ionization events (log as irregular time series events):
while true; do read -n 1 serial_byte < /dev/ttyUSB0; date --utc "+%C%y%m%d %H%M%S UTC"; done
# Here is a 'click' Geiger counter. The first command makes sure the "beep" device is not muted.
# This also shows an alternate way to read the serial port with the `dd` command.
amixer -q set "Beep" 50% unmute
amixer -q set "PC Beep" 50% unmute
while true; do dd if=/dev/ttyUSB0 count=1 bs=1 >/dev/null 2>/dev/null; beep -f 4000 -l 1; done