October 22nd, 2014


SurveySays is a script that intercepts IR signals from certain IR handheld remotes that are used to take quizzes, tests, and give other feedback in the classroom (Read as, you can see all the answers that your classmates are sending!). It uses mode2 from LIRC to get the “raw” signal, and does the processing from there.

SurveySays displays the most commonly answers given in the classroom, and can operate over several scoring rounds. According to their website, there are a million sold, and hundreds of schools using these remotes. These devices have been recently covered by slashdot and C|net/news.com.
SurveySays also provides an external “trigger” mechanism on each score reset (that is fed the answer as an argument), so you can *ahem* say… send your own ir signal, or a whole bunch of signals for your friends if you want (See irsend (part of LIRC) for details).

Downloads, etc

* “Source” surveysays\_0.1-1\_i386.tgz
* Debian package surveysays\_0.1-1\_i386.deb
* RPM package surveysays-0.1-1.i386.rpm
* Here’s a screenshot of SurveySays in action
* Here’s a screenshot of the html report generated. Note that the hex value shown in the report, is actually the ID that is printed on the back of each remote. This ends up going into the first 24 bits of the IR stream.
* And Here and here are pictures of what the remotes look like.
* Finally, this is the output of IRpet showing the bitstreams, and histogram for IR from one of the remotes that I have. I wrote IRpet to help (visually) understand the IR signal I was looking at, and it’s pretty obvious after comparing the graphs what pieces are what.

Alternatively, you can download it directly from the MRL debian security packages apt source. Just put the following in your /etc/apt/sources.list :

deb http://midnightresearch.com/local/debian etch main contrib non-free

- Linux system.
Tested on Debain, and Redhat – let me know if you get it working on
other systems (no reason I know of why it wouldn’t work). It uses
“dialog” to give output, AFAIK, this should be on most Linux
systems, let me know if you know otherwise.

- perl.
Most likely already on any of the previously mentioned systems.

- LIRC (configured).
Available from www.lirc.org. Usually this is the biggest hurdle to
getting it all working. Basically, if you can get the mode2 binary to
give valid output, this should work as well (See next point).

- IR Hardware compatible with LIRC.
This can also be difficult. The problem is that even though some of
the hardware gives results, it may not be accurate enough for these
particular remotes. The IR signals from these remotes are about twice
as short (or fast), as the signals from your typical home remote
controls. I tried ordering the recommended hardware from the LIRC
site, and it was pretty inaccurate compared to the results I got from a
working IRDA port on a laptop. If you get differing results from the
mode2 or xmode2 from the same IR signal, chances are you’ll get the
same mixed results from this software. The other hardware I tested
gave me about 30-40% error rate. The “good” hardware gave me 99%
accuracy, and was always within 10 microseconds.

If you want to test this, download the small IRpet (protocol examination tools) package from
midnightresearch.com, and run the histogram generator. Your results
should have obvious sharp spikes, which means that the timing is all
close. If not, you probably need to get some better hardware. See
the LIRC page for more details.

One other note about hardware: The stock IRDA hardware does not
have much of a range on it (3-4) feet from my testing, so you’ll
probably want to get some type of IR range extender. If you have
experience with anything specific, let me know, I’ll keep it updated


usage: ./surveysays [options]
        -t {script/binary to trigger on score reset}
        -o {html report output filename}
        -h : help

        example: ./surveysays -t irsend -o myreport.html
        This will run survey says, and will call "irsend" and the end of
        each scoring round, and will pass the current "best" answer as the
        argument.  You could maybe use this to *ahem* automatically send your answer, =)
        It also outputs all results in an html report to myreport.html

This will show a dialog box that shows what buttons have been hit, and which
answer was given most. You can hit [return] to skip to the next scoring round.
By default the screen is updated every 2 seconds. When you hit ctrl-c, it will
print an HTML report into surveysays_score-log-$date.html and then exit.

Make sure that LIRC is configured properly. If you’re not getting any
results, run mode2 directly, and see if it gives you output when you hit
buttons on the remote. As long as this works, and the results are reliable
(see earlier note on hardware), then surveysays should be able to get
signals. Also, obviously, make sure you’re in range of the IR transmitter.

If you have any problems, feel free to email me (sith {@} midnightresearch.com),
I’ll try to help you out. Also there is a mailing list for Midnight Research
Labs, check out our site, and feel free to subscribe.

Lastly, let us know what you think, email us, or just leave a comment on the
webpage. Thanks!

Imhotep theme designed by Chris Lin. Proudly powered by Wordpress.
XHTML | CSS | RSS | Comments RSS