BlueSMiRF Help!

I have a bluesmirf mate silver and I’ve hooked it up correctly, +5V to VCC, gnd to gnd, pin 2 and 3 to tx and rx. I’m trying to set it up with the AT commands and used the code given from sparkfun which is the following:

Example Bluetooth Serial Passthrough Sketch
by: Jim Lindblom
SparkFun Electronics
date: February 26, 2013
license: Public domain

This example sketch converts an RN-42 bluetooth module to
communicate at 9600 bps (from 115200), and passes any serial
data between Serial Monitor and bluetooth module.
#include <SoftwareSerial.h>

int bluetoothTx = 2; // TX-O pin of bluetooth mate, Arduino D2
int bluetoothRx = 3; // RX-I pin of bluetooth mate, Arduino D3

SoftwareSerial bluetooth(bluetoothTx, bluetoothRx);

void setup()
Serial.begin(9600); // Begin the serial monitor at 9600bps

bluetooth.begin(115200); // The Bluetooth Mate defaults to 115200bps
bluetooth.print(""); // Print three times individually bluetooth.print("");
bluetooth.print("$"); // Enter command mode
delay(100); // Short delay, wait for the Mate to send back CMD
bluetooth.println(“U,9600,N”); // Temporarily Change the baudrate to 9600, no parity
// 115200 can be too fast at times for NewSoftSerial to relay the data reliably
bluetooth.begin(9600); // Start bluetooth serial at 9600

void loop()
if(bluetooth.available()) // If the bluetooth sent any characters
// Send any characters the bluetooth prints to the serial monitor
if(Serial.available()) // If stuff was typed in the serial monitor
// Send any characters the Serial monitor prints to the bluetooth
// and loop forever and ever!

Now when I run this code, I open the Serial Monitor, type “$$$” and then the light on the bluesmirf flashes quickly showing I’m in command mode. Problem is, it didn’t print “cmd” in the serial monitor like it should have… And also if I use the command “D” nothing happens. What am I doing wrong?

First thing i see is that your delay is to short. From the RN42 advanced user manual:

If any bytes are seen before or after the $$$ characters in a 1 second window, command mode will not be entered and these bytes will be passed on to other side.

Your delay is only 100ms. and you send new characters immediately after, thus AT mode shouldn't be entered. Not sure why you did get the fast blinking LED. Maybe the datasheet is wrong. but at least it worth a try increasing the delay.