I have a project which need reliable wireless connection. I picked up one of the Bluefruit EZ-Links. It seems to work great but what I have found is that if I leave the device powered up for 3-4 hours without any activity, it becomes unresponsive. In fact, I can't find it on any devices when searching for bluetooth devices. If I power it off and then back on things work as expected.
Does this system have some sort of sleep on inactivity? The red link is blinking once a second like it always does. Is this behavior to be expected? I was hoping I could leave the Bluefruit up and connect several times a day, this doesn't appear to be possible.
Thanks in advance!
Bluefruit EZ-Link
Moderators: adafruit_support_bill, adafruit
Please be positive and constructive with your questions and comments.
- Franklin97355
- Posts: 23910
- Joined: Mon Apr 21, 2008 2:33 pm
Re: Bluefruit EZ-Link
What are you connecting it to?
- jaycollett
- Posts: 64
- Joined: Thu Jan 07, 2010 10:53 pm
Re: Bluefruit EZ-Link
I'm connecting to the Bluefruit EZ-Link from a laptop (Dell E6520). But as I said I can connect fine from the laptop or even my android phone but once I let the EZ-Link sit idle for a few hours neither my laptop or my Android phone can use the EZ-LInk. I even un-pair and try to repair which is when I noticed it no longer shows up when searching for Bluetooth devices from my Android phone or laptop.
- Franklin97355
- Posts: 23910
- Joined: Mon Apr 21, 2008 2:33 pm
Re: Bluefruit EZ-Link
is the EZ just sitting there powered on and not hardwired to anything?
- jaycollett
- Posts: 64
- Joined: Thu Jan 07, 2010 10:53 pm
Re: Bluefruit EZ-Link
The EZ is connected to the serial backpack with LCD kit from AdaFruit (782). It's getting the 5V power for it's use from the backpack which is connected via micro USB to a USB wallwart.
- adafruit2
- Posts: 22148
- Joined: Fri Mar 11, 2005 7:36 pm
Re: Bluefruit EZ-Link
Not 100% sure why it would time out but Windows does not have what we would categorize as the most stable BT stack. You may be better off closing the connection, then re-opening it to do your writes, then re-close. Is that what you're doing?
- jaycollett
- Posts: 64
- Joined: Thu Jan 07, 2010 10:53 pm
Re: Bluefruit EZ-Link
I apologize, at this point perhaps the thread should be moved over to support. One of a few things is happening with the EZ-Link:
1. It's working as designed and is set to "sleep" after several hours of inactivity.
2.I have a bad module and just need a return.
3.A bug in the firmware which presents in the use case below.
Once again, I can reproduce the error every time. Connect to the module (which hooked up to a RGB serial backpack.) send some stuff, it works. Wait for about 3 hours with no activity to the module and try again. No repsonse. Can't even see the module when searching for it from any bluetooth device/adapater (linux, window, android).
Thanks!
1. It's working as designed and is set to "sleep" after several hours of inactivity.
2.I have a bad module and just need a return.
3.A bug in the firmware which presents in the use case below.
Once again, I can reproduce the error every time. Connect to the module (which hooked up to a RGB serial backpack.) send some stuff, it works. Wait for about 3 hours with no activity to the module and try again. No repsonse. Can't even see the module when searching for it from any bluetooth device/adapater (linux, window, android).
Thanks!
- adafruit2
- Posts: 22148
- Joined: Fri Mar 11, 2005 7:36 pm
Re: Bluefruit EZ-Link
Hi, please clarify whether you close and disconnect the serial connection to the EZ-Link between attempts or not. We can't reproduce or debug with out that information.
- jaycollett
- Posts: 64
- Joined: Thu Jan 07, 2010 10:53 pm
Re: Bluefruit EZ-Link
Yeah, I even specifically added the close for the serial port connection. I'm using C#, code below, first section are some of the test variables, second secition is the connection code in question:
string comPort = "COM4";
byte[] cursorHome = new byte[2] { 0xFE, 0x48 };
byte[] whiteLCD = new byte[5] { 0xFE, 0xD0, 0x40, 0xFF, 0x40 };
byte[] purpleLCD = new byte[5] { 0xFE, 0xD0, 0xFF, 0x80, 0xFF };
byte[] redLCD = new byte[5] { 0xFE, 0xD0, 0xFF, 0x20, 0x20 };
byte[] blueLCD = new byte[5] { 0xFE, 0xD0, 0x40, 0x40, 0xFF };
byte[] greenLCD = new byte[5] { 0xFE, 0xD0, 0x0, 0xFF, 0x0 };
byte[] yellowLCD = new byte[5] { 0xFE, 0xD0, 0xFF, 0x80, 0x0 };
byte[] clearLCD = new byte[2] { 0xFE, 0x58 };
byte[] setLCDContrastHigh = new byte[3] { 0xFE, 0x50, 0xDC };
byte[] setLCDContrastMed = new byte[3] { 0xFE, 0x50, 0x6E };
byte[] setLCDContrastLow = new byte[3] { 0xFE, 0x50, 0x37 };
byte[] setLCDBrightnessHigh = new byte[3] { 0xFE, 0x99, 0xFF };
byte[] setLCDBrightnessMed = new byte[3] { 0xFE, 0x99, 0x80 };
byte[] setLCDBrightnessLow = new byte[3] { 0xFE, 0x99, 0x40 };
using (SerialPort port = new SerialPort(comPort, 9600, Parity.None, 8,StopBits.One))
{
port.Open();
port.Write(setLCDBrightnessLow, 0,3);
System.Threading.Thread.Sleep(50);
port.Write(setLCDContrastHigh, 0, setLCDContrastHigh.Length);
System.Threading.Thread.Sleep(50);
port.Write(yellowLCD, 0, 5);
System.Threading.Thread.Sleep(50);
port.Write(clearLCD, 0, clearLCD.Length);
System.Threading.Thread.Sleep(50);
port.Write(cursorHome, 0, cursorHome.Length);
System.Threading.Thread.Sleep(50);
port.Write("Away for now...");
port.Close();
}
string comPort = "COM4";
byte[] cursorHome = new byte[2] { 0xFE, 0x48 };
byte[] whiteLCD = new byte[5] { 0xFE, 0xD0, 0x40, 0xFF, 0x40 };
byte[] purpleLCD = new byte[5] { 0xFE, 0xD0, 0xFF, 0x80, 0xFF };
byte[] redLCD = new byte[5] { 0xFE, 0xD0, 0xFF, 0x20, 0x20 };
byte[] blueLCD = new byte[5] { 0xFE, 0xD0, 0x40, 0x40, 0xFF };
byte[] greenLCD = new byte[5] { 0xFE, 0xD0, 0x0, 0xFF, 0x0 };
byte[] yellowLCD = new byte[5] { 0xFE, 0xD0, 0xFF, 0x80, 0x0 };
byte[] clearLCD = new byte[2] { 0xFE, 0x58 };
byte[] setLCDContrastHigh = new byte[3] { 0xFE, 0x50, 0xDC };
byte[] setLCDContrastMed = new byte[3] { 0xFE, 0x50, 0x6E };
byte[] setLCDContrastLow = new byte[3] { 0xFE, 0x50, 0x37 };
byte[] setLCDBrightnessHigh = new byte[3] { 0xFE, 0x99, 0xFF };
byte[] setLCDBrightnessMed = new byte[3] { 0xFE, 0x99, 0x80 };
byte[] setLCDBrightnessLow = new byte[3] { 0xFE, 0x99, 0x40 };
using (SerialPort port = new SerialPort(comPort, 9600, Parity.None, 8,StopBits.One))
{
port.Open();
port.Write(setLCDBrightnessLow, 0,3);
System.Threading.Thread.Sleep(50);
port.Write(setLCDContrastHigh, 0, setLCDContrastHigh.Length);
System.Threading.Thread.Sleep(50);
port.Write(yellowLCD, 0, 5);
System.Threading.Thread.Sleep(50);
port.Write(clearLCD, 0, clearLCD.Length);
System.Threading.Thread.Sleep(50);
port.Write(cursorHome, 0, cursorHome.Length);
System.Threading.Thread.Sleep(50);
port.Write("Away for now...");
port.Close();
}
- adafruit2
- Posts: 22148
- Joined: Fri Mar 11, 2005 7:36 pm
Re: Bluefruit EZ-Link
OK! can you connect once an hour?
- jaycollett
- Posts: 64
- Joined: Thu Jan 07, 2010 10:53 pm
Re: Bluefruit EZ-Link
From an application use perspective the module may not see activity for up to 12 hours or more. From a troubleshooting perspective, waited 1 hour 15 mins and was able to connect. Trying two hours next.
- adafruit2
- Posts: 22148
- Joined: Fri Mar 11, 2005 7:36 pm
Re: Bluefruit EZ-Link
Thanks, this is really helpful for us :)
- jaycollett
- Posts: 64
- Joined: Thu Jan 07, 2010 10:53 pm
Re: Bluefruit EZ-Link
2 hours excactly and I was unable to connect to the module. Windows is complaining about the semaphore timeout period expiring; basically the serial port can't be opened in a timely fashion. To rule out windows completly I attempted to discover the module with an iPhone, Android phone and Mac laptop. None of the devices could find the module.
- adafruit2
- Posts: 22148
- Joined: Fri Mar 11, 2005 7:36 pm
Re: Bluefruit EZ-Link
Thanks, that is really helpful!
What happens if you don't connect at all. Like, pair but DONT connect, wait 2 hrs, and then try to connect?
What happens if you don't connect at all. Like, pair but DONT connect, wait 2 hrs, and then try to connect?
- jaycollett
- Posts: 64
- Joined: Thu Jan 07, 2010 10:53 pm
Re: Bluefruit EZ-Link
Trying that now. I was able to just push the "Pair" button and the module became responsive and was discoverable again. I've reset the device and paired it. I'll wait two hours and post my findings.
So according to the documentation, "pairing" can only happen if I hold the "Pair" button for 5 seconds and the red LED fast blinks. I can pair at any point and I never get a fast blink on the module, just a slow (once every 3 seconds) red LED blink. I can pair with the module at any time from any device as long as there isn't an active connection from a device already.
So according to the documentation, "pairing" can only happen if I hold the "Pair" button for 5 seconds and the red LED fast blinks. I can pair at any point and I never get a fast blink on the module, just a slow (once every 3 seconds) red LED blink. I can pair with the module at any time from any device as long as there isn't an active connection from a device already.
Please be positive and constructive with your questions and comments.