Samantha and NXTIndex

The Samantha module adds 802.11 support to a Lego Mindstorms NXT module.

  1. Problem Statement
  2. Design Background
  3. Design Approach For SAMANTHA
  4. Configuring Wireless
  6. SamoFCS Bugs
  7. Samantha Bugs

Problem Statement

Teams participating in the First Tech Challenge (FTC) robotics competition are required to use the Lego Mindstorms NXT brick  to control their robot's functions.  Prior to the start of each match the Field Management System (FMS) which is responsible for synchronizing the game play must associate with the NXT brick of each robot participating in the match.

This is a lengthy and cumbersome process. One after then other each team participating in the match must physically remove the NXT brick from their robot and connect it to the FMS system via the the USB port on the brick. Then the FMS system will attempt to connect to the NXT brick using the Bluetooth interface on the brick. This is the interface the FMS system will use to manage the NXT brick during game play. Once this process completes, the team disconnects the NXT brick from the FMS system and re-attaches it to their robot. Processing each team one after the other along with the physical machinations of disconnecting and reconnecting hardware takes up a lot of time prior to the start of each match.

An additional challenge was the presence of cell phones in the game play area.  The Field Management System (FMS) runs on a windows platform using the the Microsoft windows bluetooth stack which was easily confused by passing cell phones. The net effect was that the robots did not receive the signal to start their autonomous mode program and lay motionless on the field. Once autonomous mode completed the FMS was responsible starting the teleop program on each robot and relaying operator commands from the attached joysticks to the respective robots. However, no matter how frantically the operators moved their joystick controls, the robots did not respond.

Although there were several factors involved, among the issues were problems with the bluetooth stack on Windows combined with the turnaround time for bluetooth on the NXT.  Our goal was to come up with a way to ensure that we could readily and reliably provide connectivity to the NXT from the FMS.

Design Background

Problems to address

  1. Pairing time for the NXT
  2. Turnaround time of Bluetooth on the NXT
  3. USB Bus contention on the controlling PC


  1. Low Cost
  2. Need to have version of FMS which runs both for individual teams and at competition
  3. Simple
  4. Robust
  5. International spectrum approval

Wireless Options that we considered

Wireless Pros Cons
Bluetooth Builtin Pairing time, Turnaround time on NXT
802.11 Standard, Can use existing infrastructure for source Power Hungry, Need interface on NXT, Possibly module cost
802.15 Low power, easy to integrate Needs custom hardware on both sides
SpectrumRC Well understood in Robot/RC controls Cost, custom development, Data channel speeds to determine
XTreme Well understood in Robot/RC controls Cost, custom development.  Awaiting response

System Options we considered

  1. 802.11 Dongle on Pic processor talking to brick.
  2. Pic based ethernet interface for USB controllers (to address USB contention)
  3. Paired controller/dongle

Design Approach for SAMANTHA*

Samantha module

(*Special Access Module And Network Transport Helper Adapter)


  1. Utilize Microchip PIC32MX460F512L processor with 512K Flash and USB support).
  2. Utilize the ZeroG module for 802.11
  3. Battery connector for Robot or other external batteries.
  4. LED Indicator for low battery condition.  (Can this be done using a D/A on the PIC?)
  5. LED Indicator for Wireless connectivity.  States should be Off when powered down, Blinking when on but not connected, Solid when connected.
  6. Push button for power.
  7. Ideally Brick Module should support a USB Hub for future expansion.

Front/back/side view of Samantha








Wireless Exclusion

In order to address the problem of two FCSs potentially taking control of the same Samantha module, We have a command that we send to the Samantha over the REST interface which locks it for exclusive use. ACQUIRE tells the Samantha that the FCS to take control of a Samantha which is in use elsewhere.  If use is granted, any other connections to the NXT port of the Samantha are dropped and any other FCS attempting to connect to it will be dropped with an error message indicating which FCS has exclusive use of the Samantha.  The exclusive use will also be indicated on the Web page for the Samantha. Power cycling the Samantha causes the Samantha to drop exclusive use.  Consider the following scenarios.

  1. Samantha is not associated with anything.
    • FCS opens up port 2901 to connect to the NXT.
    • Samantha accepts the connection
    • Samantha uses IP Address of the request to lock the connection.
    • Any other attempt to connect to port 2901 on the Samantha from another IP address will be rejected.
    • When the FCS closes the port 2901 connection, the Samantha will permit any address to connect to the 2901 port
  2. Samantha is associated with the Practice field (or other computer) and attempting to connect from the Competition field
    • FCS opens up port 2901 to connect to the NXT.
    • Samantha rejects the connection because it is already in use
    • FCS asks for status from Samantha on REST interface
    • Samantha returns connection in use
    • FCS notes which field has the connection in use as RED status message and enables the CONNECT button for manual override.
    • Judge presses Connect button
    • FCS sends ACQUIRE command to Samantha
    • Samantha drops existing connection and sets Last Error indicating connection has been forced off.  FCS Clears that team from the match that it had them on. Should we stop the match in this scenario?
    • FCS opens up port 2901 as in the first scenario and continues along those steps.

Wireless Configuration of the SAMANTHA

In order for SAMANTHA to communicate, it has to know what network to connect to and how to connect to it.

The challenge here is that there really is no user interface on the module for entering information.  Some wireless networks are WPA/WEP protected with SSIDs that may or may not be broadcast.  Additionally in an environment there may be multiple wireless networks and the strongest/most open may actually not be the appropriate one to use.  For this reason, SAMANTHA will need to have an internal list of wireless networks it is to connect to and in what order.  This list will be stored internally on the flash for the processor but we will need the ability to update it.  Options to update it include:

  1. Connect through an open access network (wirelessly) and download an updated configuration file to it
  2. Use ad-hoc connection to access it from a PC and download an updated configuration file to it
  3. Create a config file on a USB flash drive and then plug it into SAMANTHA.  When SAMANTHA sees a flash drive, it copies the config file from it into the internal flash on SAMANTHA.
  4. Configure SAMANTHA for USB OTG such that when you plug it into a PC, the PC gets the ability to either see it as a flash drive (and you can just copy the config file to ir) or as a device that an application can send data to it.
  5. Add a hardware ethernet port to SAMANTHA that you can plug a PC into to copy files down
  6. Store the configuration file on the Mindstorms NXT so that when SAMANTHA talks to the NXT it can download a new config file
  7. Add a keypad/display to SAMANTHA that allows a user to enter the configuration by hand
  8. Write an application for the NXT that allows a user to enter the information and upload it to SAMANTHA
  9. Implement CAPWAP/LWAPP for automatic configuration

#3 and #4 are the preferred options as they are the least error prone and easiest for a user to understand.  #4 has a real nice option in that you could have different configurations for different routers (such as one for the pits and one for the competition) which would ensure that people aren't even trying to talk to the samr network that is running a competition.  #3 gives the ability to do other configurations to the device.

Based on discussions the current design approach is to implement options 3, 6 and 4 in that order to give us the most flexibility.  Since there is a need to store config files on the NXT for other reasons, and since SAMANTHA has to read the team number from a config file, making it read a wireless config file is a small delta in code.

One additional feature that could be considered is that we could write a program for the NXT which listens to SAMANTHA and can display the network configuration or other diagnostic messages.  Such a program is small enough that we could even store it on SAMANTHA and have it download it/execute it when we need to get diagnostics (such as Access Points available, signal strength


SamoV200.exe - V2.0 of the Samantha Field Control Software.

Other Downloads

  • Standalone boot loader code
  • - Custom boot loader to replace the bootloader on a Samantha. You could unzip onto a flash drive and just plug it into a Samantha to fix it.  Once you see the slow sequencing of 2 lights you know it is safe to remove and restart.

SamoFCS Bugs

Deferred Items

  • FCS-180. Track down memory leak
  • FCS-183. Add support for Spanish
  • FCS-190. Monitor network traffic to each robot and report when numbers get out of sync - low priorty (Values to consider include: discrepency on the number of joystick messages send and the number received by samantha) (problem trying to identify is samantha burried deep in robot causing poor conectivity)
  • FCS-193. Fix flickering group boxes.
  • FCS-195. Turnaround time monitoring.
  • FCS-209. FCS is including voltage counts while waiting for teleop to start

Fixed in 3.0.6

  • FCS-206. Match Status is being carried over to the next match
  • FCS-207. FCS is not reporting when a disconnect happens. Instead it outputs the log record too early to include additional stats
  • FCS-210. FCS Is not dumping out the joystick messages correctly to the debuglog

Fixed in 3.0.5

  • FCS-202. Fix random crash from processing the team icon.
  • FCS-205. Details button is yellow even when a team has no icon

Fixed in 3.0.4

  • FCS-204. FCS would increment the match number of the last match incorrectly.

Fixed in 3.0.3

  • FCS-202. Fix more random crashes for Unicode logging
  • FCS-203. Update FTA report for more browser compatibility

Fixed in 3.0.2

  • FCS-202. Fix random crashes for Unicode logging

Fixed in 3.0.1

  • FCS-177. Read password/config from the matchlist

Fixed in 3.0

  • FCS-182. Add support for Chinese. Correct some Unicode strings to display properly on Setup Matches window
  • FCS-200. Fixed infinite recursion of dialog boxes asking to resolve matchLog file in use...
  • FCS-201. Fixed team Logo no showing up in team details window.

Fixed in 2.2

  • FCS-192. Change minimum Samantha module version check to 2.0

Fixed in 2.1

  • FCS-174. Make countdown timer display more game representative using image from FIRST
  • FCS-175. Make countdown timer window automatically maximize on other screen if a second screen is present
  • FCS-176. Remove server integration (hide load from server button, remove read config button)
  • FCS-178. Support new joystick/gamepad
  • FCS-179. Ignore team.gif if larger than 1KB
  • FCS-181. Create option to review data from the last match
  • FCS-182. Add support for Chinese
  • FCS-184. Ensure proper error message when two FCSs run and attempt to connect to same robot
  • FCS-185. Make main window resizeable
  • FCS-186. Remember joysticks on exit and restore
  • FCS-187. Warn if Samantha version less than minimum (stored in registry for minimum value)
  • FCS-188. Show joystick setup on secondary screen if dual monitor support is enabled
  • FCS-189. Update timer to use new graphics
  • FCS-191. Change default Autonomous mode time to 30 second
  • FCS-194. Transparent joystick buttons on competition screen
  • FCS-196 Write frequency counts on 12 volt battery to match log.
  • FCS-197 Move joystick buttons to proper place on Setup Screen when resizing
  • FCS-198 Fix crash under Windows XP on startup
  • FCS-199. Create Matchlog.html and add FTA Report Button

Known Bugs

  • FCS-118. Support custom logos on the top of the screen for sponsors. This will be implemented in the scoring computer software.

Fixed in 2.0 (was previously numbered 1.1.10)

  • FCS-165. Put an outline on the timer display indicating when there is a battery problem in the shape of a battery.
  • FCS-170. Change the message "xxx is OFF" to indicate the state "Unable to communicate to XXX" when we have not been able to get any messages through.

Fixed in 1.1.9

  • FCS-137. After restart from connection to scoring server, if the scoring server is not available, clean up the registry after getting a confirmation from the user that they don't want to stay connected to the scoring server.
  • FCS-162. Put match # on the timer display
  • FCS-163. Put minimize button on the FCS main window
  • FCS-164. Add a "Remove all teams" button on the Match Setup dialog
  • FCS-166. When a team has no autonomous mode program, their status should be Yellow and not Red during the autonomous period.
  • FCS-167. When loading in a match file from the scoring server, put up a dialog that says
    "Would you like to integrate with the scoring server"
    with a Yes/No (Default=No) button that turns on / off sending the FTP files and match status updates to the scoring server
  • FCS-168. Make the load from file dialog look for both .csv and .txt files without the user having the click the drop down
  • FCS-169. When you open the setup matches window.. auto scroll to the current match.
  • FCS-171. When we lose connectivity to a NXT, don't replace the team number on the screen with the Mac address of the Samantha module. Just continue to display the team number as originally connected to.
  • FCS-172. Make the default file name be matches to make it easier to load files from the scoring server on a flash drive.
  • FCS-173. Limit the save to file dialog to .csv files as that is the only type the FCS can write

Fixed in 1.1.8

  • FCS-161. Three team alliances matches would read in Red Team3 into the Blue Team 3 slot.

Fixed in 1.1.7

  • FCS-160. Ticket #264249 - FCS hangs connecting to Scoring server when Windows 7 decides that Active FTP is better than Passive FTP instead of using the one that works.

Fixed in 1.1.5

  • FCS-159. Ticket #233359 - FCS Crash with Scoring server enabled

Fixed in 1.1.4

  • FCS-150. Automatic Enable and upload debug logs and match logs to the scoring server
  • FCS-151. Support splitting matches into two or more fields
  • FCS-152. Add support for parsing three teams for alliance matches
  • FCS-153. Add support for choosing which two teams in a three team alliance are competing
  • FCS-154. Ensure that Team image is named based on the team number and not the NXT name (to support 2901-A, 2901-B, etc)
  • FCS-155. Return end of match state to scoring server
  • FCS-156. Changed Timer Timer tick to only output once in the debug log with the number of times it occurred
  • FCS-157. Changed window title in the case of fake debug messaging to eliminate accidentally running with it.
  • FCS-158. Changed the Joystick window to be an application window so it shows up in the windows Task bar.

Fixed in 1.1.3

  • FCS-139. If a team has been disconnected for more than 2 minutes, issue an automatic E-Stop against that team so that they aren't locked to that network.
  • FCS-148. Do a full device query at the start of a match to get all the details from the Samantha including voltages
  • FCS-149. Eliminated the FakeDebugMessaging registry variable and moved it to a command line parameter as it is only used for internal testing and actually breaks connecting to the Samantha Module if it is enabled.

Fixed in 1.1.2

  • FCS-146. Don't attempt to turn off bluetooth if the Samantha module doesn't support the command
  • FCS-147. Reorder the position of the red and blue teams on the screen to match the layout of the field

Fixed in 1.1.1

  • FCS-144. Turn NXT Bluetooth off when connecting to the NXT. Display Bluetooth status in the details page.
  • FCS-145. During Competition_Wait_Teleop, send the Scoring Server the TeleopTime.. instead of zero which is what displays on the FCS timer while waiting for teleop to start.

Fixed in 1.1

  • FCS-142. Ticket #395316 - Make clicking on a button in the joystick dialog will keep that one selected instead of aborting the joystick association process
  • FCS-143. Ticket #511627 - FCS does not connect to the Samantha when a virtual network connector implements split tunneling and delivers the discovery message twice.

Fixed in RC30

  • FCS-134. Ticket #560348 - Match can be started without getting the status information updated after finishing a previous match
  • FCS-135. Need to ensure that status of a previous match is written before resetting a team.
  • FCS-136. Display the current version information more prominently
  • FCS-138. When talking to a samantha with a dual network swapping, we need to connect to them more reliably
  • FCS-139. If a team has been disconnected for more than 2 minutes, issue an automatic E-Stop against that team so that they aren't locked to that network.
  • FCS-140. Scoring software integration. Read and remember config from flash drive

Fixed in RC29

  • FCS-123. Ticket #116808 - Support all forms of a team name on a brick (e.g. 8, FTC8 FTC 8, FTC-8, FTC0008, FTC8A are all equivalent
  • FCS-126. Ticket #953479 - Use wide joystick movements to also indicate an active joystick
  • FCS-129. Add support for SamoCFG convering ASCII WEP keys and display message like WPA
  • FCS-130. Add support for SamoCFG reading the Linksys Easy Setupkey
  • FCS-131. Add support for command line option on SamCFG to have it use the FTCNTKY instead of SMRTNTKY folder
  • FCS-133. NXT Information window > rename to “Details” or “NXT Details”

Fixed in RC28

  • FCS-124. Ticket #863761 - Update the timer display when substituting a team
  • FCS-125. Ticket #148961 - Labview bots do not start Teleop program with no pause between periods
  • FCS-127. Ticket #956853 - Stop Match, e-stop has about 3 second delay for LabView
  • FCS-128. Add support for the scoring computer connecting in
  • FCS-132. Ticket #927734 - Joystick values should never get to 0x80 to avoid confusion

Fixed in RC27

  • FCS-120. Ticket #256076 - Logos were not showing up in the details screen.  They weren't also updating on the timer screen for connect and disconnect.
  • FCS-121. Password is not allowed to be the empty string.
  • FCS-122. Ticket #330596 - Change the color of the timer for the end game.

Fixed in RC26

  • FCS-117. Implement Full Screen for the timer display
  • FCS-119. Fix screen flicker when sizing the timer window

Fixed in RC25

  • FCS-116. Change color of the details button when a new icon is pending

Fixed in RC24

  • FCS-109. Timer display flickered at the start of a match (one state wasn't handled)
  • FCS-110. Support more than 8 joysticks on a machine
  • FCS-111. Add icons for different timer states on the main timer window
  • FCS-112. Add support for warning timer before the end of a match
  • FCS-113. Add support for remembering approved icons
  • FCS-114. Change color of timer based on state of the match
  • FCS-115. Change default Autonomous to correspond to new season.

Fixed in RC23

  • FCS-108. Timer display was ahead by almost a second (the time was FLOORed instead of CEILed)

Fixed in RC21

  • FCS-104 - Added fake target for stress testing (only accessible from registry setting)
  • FCS-105 - Moved Joystick message count out of the configuration dialog and into separate program
  • FCS-106 - Minor type changes for variable names noticed in porting.
  • FCS-107 - Added RobotC and Labview samostat programs to the start menu

Fixed in RC20

  • FCS-102 - Added option to make joystick replies optional
  • FCS-103 - Made FCS more resilient to lost replies

Fixed in RC18

  • FCS-100. Correct the Joystick messages to include a required null terminating byte.
  • FCS-101. Changed Joystick messages to require a reply from the NXT.

Fixed in RC17:

  • FCS-97. Reduced down the frequency of sending messages to the NXT to work around LabView bug
  • FCS-98. Fixed rare memory leak in discovery code
  • FCS-99. Fixed overflow crash and burn problem with time edit

Fixed in RC16:

  • FCS-96. Ticket #746364 - If Wi-Fi connection is lost during Autonomous period -> At end of period, Wi-Fi reconnects but the Autonomous program is not aborted hence, the TeleOp program is not started.

Fixed in RC15:

  • FCS-91. Enable the ability to forcefully disconnect another FCS
  • FCS-92. Display the status of the current team on the big timer display
  • FCS-93. Ticket #497923 - When disconnected during a match and doesn't reconnect at the end, the FCS locks up the match buttons
  • FCS-94. Team names need to display on the main timer window, even if not connected
  • FCS-95. Meaning of the Teleop/Autonomous bits were inverted in the joystick messages

Fixed in RC14:

  • FCS-10. Load from server isn't implemented (Need API to determine how this will work)

Fixed in RC13

  • FCS-90. Ticket #694673 - Indicate which teams are unavailable in the Choose Teams window.
    The choose window now has new icons in front of each entry to indicate status.  Those which are available for selection sort to the top.
  • FCS-45. Powering cycling Router causes fatal disconnect > must power cycle Samantha boards to recover (Fixed as Samo-64 in Samantha 1.18)

Fixed in RC12

  • FCS-83. Ticket #331520 - No TeleOp program start when no Pause between periods
  • FCS-84. Ticket #861311 - Using Choose button or typing in NXT name to add team (1 team matches) -> creates double entry in match schedule (Setup Matches)
  • FCS-85. Ticket #755576 - Need to add in Log -> NXT Disconnect / NXT ReConnect (This includes USB)
  • FCS-86. Ticket #771388 - Icon for the FCS still displays as FMS
  • FCS-87. Ticket #845161 - In Details; for efficiency, need to move checkbox for Display Team Logo next to the OK button and maybe make the checkbox a little bigger.
  • FCS-88. Ticket #716569 - In Log; Do we want to list matches that are skipped for whatever reason?
  • FCS-89. Ticket #819297 - In Log, the joystics lost is the number of messages and should be the approximate time in seconds

Fixed in RC11

  • FCS-72. Generate a log on the FCS.  This can be loaded in Excel.
  • FCS-79. Generate a Debug Log based on a registry key "Debug Log" indicating where to write a file
  • FCS-80. Eliminate runaway stop messages at the end of a match.
  • FCS-81. Fix parsing of the nAutonomous result from the Samantha
  • FCS-82. If you select choose, don't select a team and then click on OK, it should not replace the current team.

Fixed in RC10

  • FCS-73. Automatically reconnect if a connection is lost in TeleOp mode but not in autonomous mode.
  • FCS-74. Show the TeleOp clock at the end of Autonomous mode (after waiting 5 seconds so that they know the match is is over)
  • FCS-75. Handle match numbers greater than 99 changing the format of the on-deck
  • FCS-76. Don't show the NXT prefix on a teamname in the details window
  • FCS-77. Fix the multiple interface bug where GetSockName returns
  • FCS-78. Indicate in the match log the status of a match (unplayed, played, aborted) in order to be able to go back to a previous one or to know how far in a match list has been played.

Fixed in RC9

  • FCS-69. If you have two network connections and the samantha is found on the secondary connection, when you attempt to connect to it, the FCS passes the wrong address for the validation.
  • FCS-70. If you disconnect a samantha while downloading the image file, it could be corrupt causing a crash in the FCS
  • FCS-71. Sending a request for the Icon doesn't stop a subsequent request which could result in failing to detect an error on the previous HTTP response

Fixed in RC8

  • All strings have been moved into the resource file so that the FCS can be easily internationalized.
  • FCS-65. If no Autonomous mode charge.wav should play at start of match.
  • FCS-66. Maybe a 5 second delay at end of match before timer is updated for the next match. It will give folk time to verify in their own mind that the match is over
  • FCS-67. If NXT experiences power bump and connect button is pressed, Samantha does connect and program can be run but status box remains as displayed below until end of period. The only time this would be critical is if the dropout occurred during autonomous mode, otherwise, the program would not be restarted. (Fixed in RC8)
  • FCS-68. if there is a warning (low voltage in this case) in the status box when a match is started, the status box goes green and displays "Running". should still be yellow with warning

Fixed in RC7

  • FCS-58. If running teleop mode only and you hit E-Stop, don't auto-restart the program.  The new approach is that when a match finishes you have to replace a team (or hit load on deck) to clear the stops.
  • FCS-64. When creating a new match, it is always added as -SUB, even at the end and even if you do a remove all teams
  • Major cleanup to prepare for internationalization support.  Most strings have been put into the Resource

Fixed in RC6

  • FCS-58. If running teleop mode only and you hit E-Stop, don't auto-restart the program.  There is now a new state for the start button called "Prepare" when you are running Teleop mode only which has it load the Teleop mode for all teams
  • FCS-62. If you turn off a brick, the scan code has two entries for the same Samantha
  • FCS-63. In Details, NXT Battery Voltage background color is yellow even if Voltage is above 7.5 Volts.  As it turns out, we weren't actually getting and parsing the battery voltage or checking it correctly.

Fixed in RC5

  • FCS-11. Doesn’t retrieve Robot voltage.  Currently it only retrieves the NXT Voltage.
  • FCS-49. Display Team Icon and status on Big timer window
  • FCS-52. Add support for getting last message from Samantha via HTTP.
  • FCS-54. Turn off the dialog when starting with errors
  • FCS-55. Display all samanthas found (add a new button next to the connect button.  allow them to select a samantha)
  • FCS-56. Allow enabling of an icon via a check box on the info page for a team
  • FCS-57. Implement new sound for end of Autonomous mode
  • FCS-60. Make IP Address on team info a hyperlink that is clickable
  • FCS-61. If you hit E-Stop, the program doesn't abort
  • FCS-59. Make Joystick Dialog Smaller/Resizable

Fixed in RC4

  • FCS-42. Scrolling quickly through the matches using the Load OnDeck button can cause an issue.  Symptoms  one, two, three, or all four status boxes will display "No program running" and/or "No TeleOp" set though, both the TeleOp is set, and there is a program running
  • FCS-43. Powered down Samantha boards for one half hour (dinner) while still connected to FCS. Powered on return, three of four connected without issue
  • FCS-50. Close file handles for reading the teleop name
  • FCS-51. Send the Autonomous bit when sopping motors at the end of a teleop

Fixed in RC3

  • FCS-35. When a network connection gets dropped during a match, the FMS should attempt to reopen it if possible and note that the event occurred.

Fixed in RC2

  • FCS-40. If operator deselects the Autonomous period > FCS starts TeleOp program on NXT and continues to restart it (if stopped on brick).  This should be addressed by moving the match setup to a separate dialog.
  • FCS-41. NXT should not appear in front of a team number.  This can actually cause it to create a sub match which is not the intention
  • FCS-44. E-Stop condition should be reflected in Status Box
  • FCS-46. Setup Matches and Load On Deck probably should be ‘Grayed-out’ during pause between periods
  • FCS-47. Stop Match should be available during pause between periods
  • FCS-48. When loading team numbers from a .csv file, teams need to be padded with leading zero to 4 digits

Fixed in RC1

  • FCS-12. Doesn’t handle two NXTs with the same (or variation of same) team number
  • FCS-13. Doesn’t gracefully handle losing a TCP connection.  (Improved in 0.97, but not complete)
  • FCS-17. Turning off pause between matches checkbox doesn't actually cause the teleop to auto-start
  • FCS-18. The Large window timer doesn't scale when the screen is larger than 1024/768.
  • FCS-19. Attempting to connect to a Samantha that already has an active connection (either from the same FMR or another one) causes either the new FMS to lock up or a crash in the old FMS (or both)
  • FCS-33. When a substitution is made for a match, a new match should be created and stored for the Setup Matches window to see.  The substituted match will have the same number as the original match with the text "-Sub" added to it.  So if the original match was 1 with teams 22,33,44,55  and after it was loaded someone typed over the 22 with 2901, a new entry will be added to the list of matches that Setup Matches sees in the form "1-Sub, 2901,33,44,55".  This entry will be added in the list right after the substituted one.
  • FCS-34. When Joysticks are disconnected or not available, the status should indicate that for the team.
  • FCS-35. When a network connection gets dropped during a match, the FMS should attempt to reopen it if possible and note that the event occurred. Partial Fix allows clicking on the Connect button
  • FCS-39. Add checking for missing joysticks to the status message for each team

Fixed in 0.99

  • FCS-04. Ending match doesn’t send a stop program signal
  • FCS-05. E-Stop doesn’t send 250ms of null joystick followed by a abort program
  • FCS-08. If all four robots are in E-Stop mode, it should stop the match (low priority)
  • FCS-14. Attempting to connect to a bad socket causes program to slow to a crawl (Socket connect needs to be done on a worker thread).
  • FCS-16. SamoFMS doesn't auto-start the Teleop program sometimes
  • FCS-22. Stop match or end of match should clear all E-Stops
  • FCS-23. Pressing Disconnect should not automatically reconnect a robot.  Note that this should not change the attempt to auto-connect when a match is initially started.
  • FCS-24. E-Stop should be a toggle.  When a robot is in E-Stop, you should be able to click Enable between matches to allow them to participate in the Teleop mode.
  • FCS-36. Allow configuration of the colors and remember them in the registry.  Set the default colors to be:
    Red RGB(255,60,60)
    Yellow RGB(255,255,0)
    Green RGB(0,112,0)
  • FCS-37. Disable default system sounds during match and enable sounds as follows: -Disabling system sounds is too risky though.
    Start of Match CHARGE.wav
    Start of TeleOP BELLS.wav
    End of Match ENDMATCH.wav
    Stop Match FOGHORN.wav
    Computer Error marvin.wav
  • FCS-38. Turn off screen saver

Fixed in 0.98

  • FCS-06. Start Match doesn’t check for error conditions.  It should prompt to start the match if any Yellow or Red conditions are shown.  The prompt should indicate which robots have which status conditions and allow an OK/Cancel decision.  This should also check to ensure that joysticks are defined for all teams.  Clicking OK will start the match.
  • FCS-20. Setup Matches should have the ability to delete a match (with verification).
  • FCS-27. Gamepad indicators in Current Teams should display as 1/2 instead of the relative number
  • FCS-29. Current Mode should display as follows
    Description Activity Current Mode
    Default condition Idle > Start Autonomous
    With Autonomous> Start match Pressed > Autonomous
    Start Match button should be> 'Grayed'  
    End of Autonomous (with Pause)> paused > Start TeleOp
    Start Match button should display> Continue  
      Continue Pressed > TeleOp
    End of TeleOp> Idle > Start Autonomous
  • FCS-30. Big Display should read Timer Display
  • FCS-31. In the Setup Matches window, there needs to be the ability to see which is the current match and then also select a new match as the current match.  This will allow going back and replaying an existing match.
  • FCS-32. If the Teleop button is not checked, after a match completes and you select load next match, the start Match button doesn't appear to start the match.

Fixed in 0.97

  • FCS-07. Status box doesn’t show error conditions for individual teams.   This information should be updated at least every 5 seconds automatically. It should show as follows:
  • GREY Background/Empty for no robot assigned for this match
  • GREEN Background - Everything is ready to run for this match.  The text will say "All Things normal, Battery 7.38V/11.23V"
  • YELLOW Background - Can run match, but indicates marginal situation such as weak battery, or no program is running while in autonomous mode.
  • RED Background - Robot is not connected, No Teleop Program defined, Battery is too low to run a match.
  • FCS-21. In the Next match window, the Blue1 team is displayed twice and the Blue2 team is not displayed at all
  • FCS-25. Next Match should display as On-Deck
  • FCS-26. Load Match should read as Load On Deck"
  • FCS-28. When you first launch the FMS, it should automatically invoke the Setup Joysticks functionality.

Fixed in 0.96

  • FCS-03. Replacing the name in a team doesn’t connect to the right one (needs to look at the edit version)
  • FCS-09. Safe as file doesn't create a .csv
  • FCS-15. If a NXT doesn't have n FTCConfig.txt file, SamoMS keeps trying to retrieve the Teleop name and never gets any other information.

Fixed in 0.95

  • FCS-01. Need to hit Stop Match twice in autonomous mode
  • FCS-02. Hitting stop match needs to start over from scratch on the current match

Samantha Bugs

Bugs can be entered at

Deferred Items

  • Samo-07. Press button, write current config to flash - John - Will defer until later release.  Need to get ability to have a current time.
  • Samo-15. Look at hub support - John - Will defer until later release - not needed for now

Known Issues


Fixed in 1.49

  • Samo-102: Support Recieving a NXTWriteCommandEx command structure for NXT_CMD_WRITE
  • Samo-103: Add "max_request_length":"##" to the response string from SAMANTHADeviceInfo.html. Currently returns a max size of 64.

Fixed in 1.48

  • Samo-101: Show NXT bluetooth status on default webpage. support FCS sending a set bluetooth off message to the NXT.

Fixed in 1.47

  • Samo-98. Ticket #287841 - When the battery voltage dips below 4.7V the USB on the NXT drops the connection and doesn't recover until powered off
  • Samo-99. Ticket #287841 - When the battery voltage dips below 3.5V the RF circuitry on the WiFo module shuts down and messages are no longer received

Fixed in 1.46

  • Samo-100. Added ability to disable pairing in the network configuration

Fixed in 1.45

  • Samo-95. SamoStat should indicate when a password or encryption is wrong. The second line in SamoStat will now display a status message when a connection fails. Possible messages are:
    • ?NOT CONNECTED - Indicates general error when connecting
    • ?Wrong Encryption - The network is of a different type (WPA/WPA2/WEP/None) from what was specified
    • ?Fail Authenticate - The password to get onto the network was incorrect
    • Authenticating - Displayed while the Samantha module is still negotiating with the network
    • Associating - Another state while the Samantha module is connecting to the network
  • Samo-96. Disallow null passwords. This means you have to have a password set on the FCS/Samomoto in order to connect
  • Samo-97. Hide the actual SSID passwords on the web page so that nobody can clone them and connect.

Fixed in 1.44

  • Samo-92. Ticket #719353 - Voltage reports don't appear to track a slowly droping input voltage
  • Samo-93. When you change networks, the samantha should update SamoStat immediately.
  • Samo-94. SamoStat should indicate when the samantha is in dual network mode.
  • Samo-95. Disallow blank passwords

Fixed in 1.43

  • Samo-39. Documentation
  • Samo-90. Ticket #304559 - SamoStat displays extra characters at the end of a secondary network.
  • Samo-91. Added support for dynamic switching between a primary and a secondary network when both are found.

Fixed in 1.40

  • Samo-35. Implement Factory Testing web page interface
  • Samo-89. Implement auto-creation of AdHoc network when selected by the user

Fixed in 1.30

  • Samo-88. Corrected tracking of NXT messages when aborting an HTTP connection early.

Fixed in 1.29

  • Samo-87. Removed limiter from Samostat sender to use the global limiter

Fixed in 1.28

  • Samo-86. Added limiter for how fast messages are sent to the USB bus to avoid LabView bug which causes NXT to lock up. Default is set to 25ms between messages, but can be changed by going to http://
    /samantha/USBSetProperty.cgi?interval= wheren is the number of miliseconds to wait between messages.

Fixed in 1.27

  • Samo-84. Added support for WPA with a Pre-shared key
  • Samo-85. Integrated latest code from Microchip to support single scan of network and automatic reconnect

Fixed in 1.26

  • Samo-82. Reenabled support for WEP and WPA for infrastructure mode
  • Samo-83. Made crash in BufferMv automatically reboot

Fixed in 1.25

  • Samo-78. Fixed problem where simulated code wasn't always recognizing when a brick was attached
  • Samo-79. Corrected the default name to be the MAC address of the ZeroG instead of "Samantha"
  • Samo-80. Implemented displaying network type of Adhoc in SamoStat.
  • Samo-81. Added LabView version of SamoStat

Fixed in 1.24

  • Samo-75. Fixed crash with ScratchMv failed (Microchip Bug 1-173490) where the wrong scratch buffer was getting selected
  • Samo-77. Fixed AdHoc mode code to use AutoID and DHCP only for a short period of time

Fixed in 1.23

  • Samo-75. Added a delay when sending messages to samostat program on the NXT in order to make it work with LabView

Fixed in 1.22

  • Samo-74. Implemented simulated brick for testing of Microchip problem with "ScrtchMv Failed " message with ZGErrorHandler Fixed in 1.22

Fixed in 1.21

  • Samo-67. Integrated 5.20 version of Microchip TCP stack and USB stack
  • Samo-68. Return cached Brick name on HTTP requests
  • Samo-69. Fixed refresh bugs with IE 6
  • Samo-70. Cache Battery Voltage and return Cached Value on HTTP requests.
  • Samo-71. Exit HTTP task if there are TCP messages waiting from FCS.
  • Samo-72. Send Keep alive message to brick if FCS is not sending frequent enough traffic
  • Samo-73. When HTTP connection resets, call Custom App reset routine to cancel any pending NXT requests.

Fixed in 1.19

  • Samo-65. Enable the ability to force disconnect from another FCS
  • Samo-66. Correct meaning of Teleop/Autonomous bit in the joystick message

Fixed in 1.18

  • Samo-62. Reduce the size of the status messages returned to reduce overall network overhead
  • Samo-63. Ticket #694673 - Add support to return current Samantha status as part of discovery request.
  • Samo-64. [FCS-45] - Powering cycling Router causes fatal disconnect > must power cycle Samantha boards to recover

Fixed in 1.17

  • Samo-61. Update Samantha LED behavior as follows:
    • Red -> Power: goes on when Samantha is powered.
      If power drops below 10V, set to blink and stay there until power-cycled
    • White -> Wi-Fi: neither primary or secondary network is available - off
      primary and/or secondary network is available - blink
      connected to FCS - steady
    • Blue -> NXT/USB When powered -> off until NXT connected/powered
      NXT connected / powered - on
      NXT disconnected or powered off - blink

Fixed in 1.16

  • Fixed major crash and burn when saving the first password

Fixed in 1.15

  • Samo-55. Samantha should not allow a connection to the TCP port unless excluse use has been granted
  • Samo-56. Samantha does not reset statistics on exclusive use acquisition
  • Samo-57. Samantha was returning the wrong image for the default team logo
  • Samo-58. Default team image was being compressed causing problems for the FCS.
  • Samo-59. Implement private web page for viewing passwords (admin.htm)
  • Samo-60. Change default password for access to private webpages.  No, I won't put the password in the bug report.  You have to ask me for it.

Fixed in 1.14

  • Samo-54. Samantha does not have a way to restrict which FCS can pair with it

Fixed in 1.13

  • Samo-53. Infrastructure was parsing the wrong option from the config file.  It was looking for BSS instead of ESS.

Fixed in 1.12

  • Samo-49. Using IE 8, data on the web page will stop updating during Autonomous mode.Still having issues with web page in IE. Data stops updating during Autonomous mode.
  • Samo-50. In FF, message stats get messed up at the end of both modes
  • Samo-51. Data will not load into FireFox if page is opened while Autonomous mode is running. Web Page is opened while Autonomous mode is running.
  • Samo-52. Samantha does not appear to get a random link-local IP address.  It now uses the Mac Address as a basis for the IP address

Fixed in 1.11

  • Samo-40. Implement debug console on the Mindstorms
  • Samo-41. Send messages to the debug mailbox on the mindstorms when no network is connected
  • Samo-48. Announce name for IP discovery when plugging in/unplugging the brick

Fixed in 1.10

  • Samo-44. Debug why Samantha power on automatically (1 minute timer interrupt from the ADC)
  • Samo-19. Add support for parsing adhoc mode config files
  • Samo-33. Do Ad-Hoc setup/Testing
  • Samo-34. Write Config File Generator for Ad-Hoc
  • Samo-45. Skip A: and B: drives in SamoCFG writer
  • Samo-46. SamoCFG needs to write use ESS/IBSS for Infrstructure/Adhoc mode instead of IBSS/BSS
  • Samo-47. When connecting to a non primary/secondary network, the Samantha needs to check the type of the network before connecting.

Fixed in 1.9

  • Samo-13. Report power levels from Battery via REST- ME
  • Samo-32. Make Power Down button work consistently
  • Samo-37. Display known pattern when a file is discovered on the flash drive
  • Samo-38. Debug writing log file to the flash drive

Fixed in 1.8

  • Samo-28. Implement ZeroG Startup Delay
  • Samo-29. Read the voltage
  • Samo-30. Return Voltage in Ajax for WebPage
  • Samo-31. Update LED state based on Voltage
  • Samo-36. Stop the CYLON mode when DHCP is received
  • Samo-42. bootloader version info (in web page & Ajax) (http://test/BootloaderVersion.htm
  • Samo-43. proc speed to 80MHz in bootloader

Fixed in 1.7

  • Samo-12. Hold Button to power off- John
  • Samo-21. Make power button go into low-power mode.
  • Samo-24. Implement exclusive use
  • Samo-25. Fix duplicated 8 bytes in web pages when loaded via boot loader
  • Samo-26. Discard obsolete messages to disconnected clients from NXT
  • Samo-27. Don't combine messages to the NXT when they arrive at the same time

Fixed in 1.6

  • Samo-20. Track down why HTTP doesn't work in release mode when located higher in memory

Fixed prior to numbering of images

  • Samo-01. Return last error as REST
  • Samo-02. Record stats
  • Samo-03. Return stats as REST
  • Samo-04. Show stats on webpage
  • Samo-05. Load config for wireless from flash drive
  • Samo-06. Select preferred wireless from scan of networks
  • Samo-08. Load icon from NXT and remember it
  • Samo-09. Save wireless config to PIC Internal flash Memory
  • Samo-10. Make default name based on mac addr of ZeroG
  • Samo-11. Power on reset cleanup.  Reconnect to wireless?
  • Samo-14. Implement LED lighting from above
  • Samo-16. Add version numbering
  • Samo-17. Display wireless config on the web page
  • Samo-18. Enable support for adhoc mode
  • Samo-22. Create combined production load
  • Samo-23. Find the code which is blinking the LED! - Shared line only on devel board