Even though I got to a business school and am a management major, my real passion is working on websites.

We just build a new library here, for millions and millions of dollars. We use a tool called RoomWizard for booking rooms. We get a web-based interface to book library rooms. This is a great idea. Unfortunately, it’s so fraught with bugs that it borders on unusable.

The main “bug” is that it’s basically so slow that it’s unusable. I tried viewing the source, and it’s got a HUGE block of JavaScript that’s a pain to read. Most of the page is being generated on the fly with JavaScript. There are times when this is the best way to do something. This is not one of them.

My current understanding–I may be wrong, since I’m still trying to make sense of this–is that each of the touch-screen units on the wall is a webserver. It’s responsible for storing all of its reservations. So when you view the main page, JavaScript has you going out to each of the 20+ rooms and requesting their status. The problem is that this takes forever, probably at least 15 seconds. By the time the page has finished drawing, it’s about time for the 60-second refresh to kick in.

I did a bit of viewing headers. The main page is running on, but each individual room controller (probably like a 300 MHz embedded chip?) is running Apache Tomcat. Someone did a quick port scan and found that the devices have a lot of open ports–ftp, ssh, telnet (!), HTTP, and port 6000, which nmap guessed was X11. So I have a pretty good feeling these things are running embedded Linux.

Another problem is that there’s always one or two of the devices that, for whatever reason, are unreachable. So you get errors on those ones.

Booking conference rooms is like a Web Programming 101 interface. You get a basic introduction to SQL databases, and write a little interface. You could run this on an old 1 GHz PC with 128 MB of RAM and have pages load in fractions of a second, especially if you really knew how to configure a webserver. (Turn on APC and MySQL query caching, in this case, and you’re golden.) I cannot fathom why they thought it was a good idea to have a page make connections to 25 different little wall-mounted touchscreens. This places a big load on what have got to be underpowered little units, and is just a nightmare any way you look at it. I really see no benefit to what they’re doing.

Furthermore, this breaks off-campus connections, since you can’t connect to these units remotely.

You convert the wall-mounted RoomWizards from embedded webservers into a little web browser client, and they just pull down the data from the main server.

With a traditional, single database, it would also be easy to write a little search tool–“I need a room on Friday from 3:00 to 5:00.” This is a fairly simple SQL query. This is not a fairly simple question to ask 25 wall-mounted touchscreen things.

I’m tempted to write a little PHP script to go out, retrieve the data, and cache it. Essentially a hacked-together proxy…

10 thoughts on “RoomWizard

  1. Kyle wins “Hero of the Day,” having looked into the hardware specs… Per the note he left on my whiteboard, each unit is…

    – 433 MHz Geode Processor
    – 256 MB RAM
    – 2GB flash storage
    – A USB (2.0) port
    – 10/100 Ethernet
    – 640×480 TFT display

    For such a slow processor, that’s a lot of RAM and a huge amount of storage.

  2. They’ve got an API interface. I can’t figure out how to access it; it may not be turned on.

    But with this knowledge, I now want to write a PHP application that will store all reservations locally in MySQL, and then push them out to the devices so they continue to work correctly.

  3. The device has some security issues. You can connect a usb hub, and then a keyboard, mouse and a bootable flash drive. Turn the device off, then back on and it boots from the flash drive. The device booted Ubuntu 9.04, displays the desktop, and acquired eth0.

  4. Not sure if anyone still follows this: I recently acquired two of these at a computer swap meet in Southern California. Like you, I’m also a management major (just finished my MS), but one of my passions has always been computer hardware. I’m trying to figure out how to run straight X windows on here just so I can have it display a clock and maybe the weather or something. I managed to boot single user and change the root password, but its original purpose seems rather trivial.

  5. Hello Matt, we have around 10 of this units in our office, and they’re becoming quite outdated. I couldn’t agree with you more, a simple sql database could be running the entire system. I’m interested if you developed the PHP script you mentioned.


  6. Not sure if anyone is still here, but this seems to be the only place I can find anyone talking about these darned things! I have a bit of a problem and am wondering if anyone would be willing to help; I have a RoomWizard (the old one) with a hard drive that decided to give up the ghost recently and I haven’t been able to find a firmware image anywhere. Would someone with a working RW10 be willing to crack theirs open and image the drive? Note that these are old PATA drives, so I’d be more than happy to send a PATA to USB adapter to you in exchange for helping me out (Plus, you’d also have an image once your drive dies!) (Yes, I do realize that these old units are slow and crappy, I just hate to throw it away when the only problem is a dead drive.) Thanks in advance!

  7. Does anyone know how to factory reset these? We have 2 that we are unable to log into and and we can see them in the Room Wizard Admin console however when we try to upgrade firmware it says incorrect password or unit is not responding. Thank you all for your help and expertise.

  8. To factory reset, you have to hold the pinhole reset button as it starts. Assuming the 4GB MicroSSD chip inside of the unit isn’t corrupt.

    There’s the segway into my question…..
    I took the time to figure out how to disassemble the RW20, as Steelcase refused to give me any build diagrams to take it apart. You just need a very slim tool (In my case, a plastic wedge) to pop any of the corners away from the case, and worked my way around. There’s a series of plastic nodules around the back of the case tucked inside the room wizard. So needless to say, disassembly is very easy. The micro SSD card sits clearly visible on the top of the printed circuit board, a 4GB micro SSD to be exact. I tested pulling the card to see what the device would boot with….but, it doesn’t without the card. I’m assuming there’s some form of another chip on one of the PCB’s that has a boot instruction to not boot without a pre-programmed card inserted, as I tested a blank 4GB card, and it won’t boot.

    So, now my question.
    Can a WORKING microSSD be pulled from another device, and be cloned?

    In 2021, I will be replacing my entire fleet of these, as they are overpriced garbage to say the least. But, if I can extend the life with $5 micro SSD cards on hand….I’ll take advantage of it.

Leave a Reply

Your email address will not be published. Required fields are marked *