Fitbit Flex Light Patterns
The Fitbit Flex manual is woefully inadequate, and there are various blogs and self-help sites with ridiculously-slow load times that give about the same tiny bits of information... so I have set up this web page to augment it.
~~~~~ (no lights)
If you see no lights at a time when you would normally expect to see lights, there are several possibilities:
If the Flex is not connected to the charging cable, its battery might be dead. Plug it in and see if you get the "••~••" light pattern: if so, then the Flex's battery was dead. If you see nothing, it might be syncing (see next paragraph) or the charging connection contacts might be dirty.
If the Flex is near your phone with the Fitbit app running (perhaps in background), or your comptuer with the Fitbit USB dongle and Fitbit software installed, then the Flex might be syncing. During part of the sync process, the Flex is busy transferring data, and will not respond to your input (tapping or shaking) in the normal way. If the Fitbit app or software does not see the Flex, and it should (that is, you know this Flex is paired with your phone or computer), then check if the Flex's battery is dead (previous paragraph).
If neither of the above explain the problem (i.e. Flex cannot charge and cannot pair with the Flex app), attempt a Hard Reset. If that does not help, then the Flex is probably permanently broken.
••~•• (11011 once)
Cold Boot: The Flex was completely "off", perhaps because its battery had run down or because you did a hard reset (instructions below); it will also reboot itself when finishing a software update ("Cylon" pattern below). If the Flex is doing this every day when you plug it in, either it is very old (more than a few years) or there is a defect in the battery and/or charger circuit.
•~~~~, ~~~~~, •~~~~, ~~~~~, ... (10000, pulsing, repeating)
••~~~, ~~~~~, ••~~~, ~~~~~, ... (11000, pulsing, repeating)
•••~~, ~~~~~, •••~~, ~~~~~, ... (11100, pulsing, repeating)
••••~, ~~~~~, ••••~, ~~~~~, ... (11110, pulsing, repeating)
Charging : The Flex is plugged in, and the battery is charging. According to the manual, "Each light represents 20% of the maximum charge. Once all five lights pulse in unison, your Flex will be fully charged." It is probably more truthful to say that each of the first 4 lights are worth 25% each: •~~~~ for 0-25%, ••~~~ for 25-50%, and so on, while all 5 lights mean it's at 100%.
•••••, ~~~~~, •••••, ~~~~~, ... (11111, pulsing, repeating)
Battery Full : The battery is at 100%, or nearly so. (Modern Li-Ion charging control circuits typically avoid prolonged overcharging, which would cause battery overheating, so even if you leave it connected to the charger constantly, it might let the battery go down to 99% or 98%).
•~~~~, ~•~~~, ~~•~~, ~~~•~, ~~~~•, ~~~•~, ~~•~~, ~•~~~, •~~~~ ("Cylon eye" pattern)
Readout Pending : When this pattern is shown just once, you have "tapped" or shaken the Flex twice and the Flex is now about to give a readout of your goal status for the day ("Readout" pattern below).
Update in progress : When this pattern displays repeatedly, the Flex is receiving a software update from your Bluetooth-connected device (phone, tablet, or computer).
•~~~~, ~~~~~, •~~~~, ~~~~~, ... (10000, pulsing, repeating)
••~~~, •~~~~, ••~~~, •~~~~, ... (11000/10000, repeating)
•••~~, ••~~~, •••~~, ••~~~, ... (11100/11000, repeating)
••••~, •••~~, ••••~, •••~~, ... (11110/11100, repeating)
•••••, ••••~, •••••, ••••~, ... (11111/11110, repeating)
Readout : The Flex has just displayed Readout Pending (see above) and is now giving the readout. This is a percentage of your daily goal (set via the website or app interface) that has been measured since the beginning of the 24-hour period (i.e. midnight according to your timezone setting, also selectable through the app).
Each light represents 20% of your goal; for example if you see "••••~, •••~~, ••••~, •••~~, ..." (3 lights solid plus one blinking) it means you are between 60% and 80% of your goal.
•~~~• (10001) + vibrate
Start Activity/Sleep : You have "tapped" or shaken the Flex five or more times, and the Flex is now beginning "sleep" or "special activity" mode. It will now log the time you spend until you again shake/tap the Flex five or more times. If you are moving around during this period it will count as "special activity", otherwise this time will appear in your Fitbit ativity log in the "Sleep" panel. (This behaviour is similar to the similar behaviour of Fitbit Ultra, and was silently added for Flex users in 2013. See This blog for a description.)
•~~•~, ~•~~•, •~~•~, ~•~~•, •~~•~, ~•~~• (10010/01001, repeated three times)
Sleeping : You have "tapped" or shaken the Flex twice and the Flex is now telling you that it is in sleep/special activity mode.
••••• + vibrate, ~~~~~, •••••, ~~~~~, •••••, ~~~~~, •~~~~, ~•~~~, ~~•~~, ~~~•~, ~~~~•, ~~~•~, ~~•~~, ~•~~~, •~~~~ (11111/00000 repeated three times, followed by "Cylon" pattern)
End Sleeping/Special Activity : You have "tapped" or shaken the Flex five or more times, and the Flex is now ending "sleep" mode.
~~•~~ + vibrate, ~~~~~, ~~•~~, ~~~~~, ~~•~~, ~~~~~
Alarm : Your silent alarm is going off. Silent alarms are set through the webpage or mobile phone app. Tap several times to silence it. If you fail to do so, it will "snooze-alarm" after another 9 minutes.
~~•~~ (fading), ~~~~~
Alarm cancelled : You have "tapped" or shaken the Flex several times to disable your silent alarm. Following this display it will usually show your goal progress for the day (which will probably be "•~~~~, ~~~~~" if you're just getting up in the morning).
•~~~•, ~•~•~, ~~•~~, ~•~•~, •~~~•, ~•~•~, ~~•~~, ~•~•~, •~~~•
Signalled by mobile app : The Fitbit app on your phone or tablet has detected and signalled the Flex with this pattern to make it clear that the Flex has been "detected". (The app then asks you to tap the Flex display until it vibrates to confirm that you want to "pair" it.)
~~•~~ + vibrate, (fading), ~~~~~
You have "tapped" or shaken the Flex twice to confirm that you want it to be "paired" with the Fitbit app on your phone.
A Real Manual!
Brookstone sells the Flex, and thanks to their policy of always providing manuals to their customers, Fitbit produced a Flex manual. The old Brookstone manual was formerly here, and a newer version is here: Fitbit Flex manual
Misleading Error Messages
"Does Your Tracker Have Power?"
(Make sure your tracker's display turns on and it is close to the Wireless Sync Dongle.)
This happens if you try to sync and there are two Fitbit Flex units within range of the computer or device that you use to do your syncing. For example, if you have a Windows PC with the Bluetooth dongle, and there are two (or more) Flex trackers both within 15 feet of the PC when you initiate the "Sync Now" command from the Fitbit app. To avoid this false and misleading error, move all but one of the Flex units (or any other Flex trackers) well away from the PC, then repeat the Sync Now command (or just wait for it to sync automatically, which usually happens within 5 or 10 minutes).
The second part of the error, "Make sure your tracker's display turns on and it is close to the Wireless Sync Dongle.", might be even more confusing. It sounds like Fitbit is telling you that the Flex lights up automatically when you start syncing. It does not: it only lights up when you tap or shake it multiple times, or when an alarm goes off or when you reach your daily exercise goal. The corresponding message in the mobile app is much better: "Make sure lights appear when you double tap your tracker. If no lights appear, charge your Flex.". I would prefer something more like "To confirm that your tracker is charged, see if it lights up in the normal way when tapped. To sync successfully, a tracker should be within (3 meters, 10 feet) of your computer when you sync."
You Need to Log In
This happens if you try to sync and there are two Fitbit Flex units within range of the computer or device that you use to do your syncing, and they are connected to different accounts. Remember, you can only have one Fitbit device active on each Fitbit account, so if you have two Flex units you almost certainly have two accounts. Also, you can only be logged into one account at a time in the Fitbit app.
Thus, even if you are already logged in to one of your Fitbit accounts, the Fitbit app notices that there is another tracker (like a Flex) whose account is not currently logged in, and it provides a misleading and pointless error message to tell you this.
Hard Reset Instructions
To force the Flex to "reboot", do the following:
- Put the Flex in the charger as you normally would to charge.
- Find the tiny hole in the charger, on the opposite side from the Fitbit logo. This hole is about 1/2 mm in diameter. There is a button inside the charger that can only be pressed by inserting something into this hole.
- Un-bend a small paper clip, and use the end of the paper clip to press the hidden button. Hold for at least 4 seconds.
- Upon removing the paper clip, the unit should boot (••~•• for 1/2 second followed by ~~~~~ for 1/2 second) and then should display the normal charging indicator (a pulsing •~~~~, ••~~~, •••~~, ••••~, or •••••).
Overview of Operation
The Flex spends most of its time checking the accelerometer to detect movement, computing when enough movement has occurred to count a "step", and saving this information in its static RAM memory.
As secondary periodic tasks, it tests to see if the recent movement(s)are strong enough and frequent enough to indicate user input, and it checks Bluetooth to see if a sync can be performed.
The Flex has 32 kib (32768 bytes) of Flash memory. Its software is updateable, and the CPU (a STM32L151C6) has no ROM or any other type of non-volatile memory, so we know that the Flash memory is used by the software (and possibly other things). All of the Flex's software must fit in 32K. This is not as bad as it might sound early home computers such as the Apple ][ could easily fit an operating system (with drivers for "dumb" peripherals), BASIC interpreter, and application program in 16K or less, and the Flex has separate chips to handle some of the more complicated tasks (the Bluetooth chip, for example, contains its own special-purpose CPU).
The Flex can collect data at full detail for up to 7 days. Through the website interface we can view data in 5-minute intervals, and each datum is a step count (which, at the user's option, can be re-interpreted in other terms such as calories, based on their weight and other preference settings). If each datum is 2 bytes, 7 days of data at a 5-minute resolution takes 7×24×12×2 = 4032 bytes. There are a few other bits of data that need to be stored in RAM, such as alarm settings and event ("sleep mode") start/end times, but they probably add up to a few hundred bytes at most.
This data goes in the RAM (which is "static", meaning that it can be preserved with just a power supply voltage and extremely little current). It could theoretically go in Flash, but that takes a lot of power, and there is no need as the 10K of RAM is more than enough. The CPU can go to sleep and even appear to "shut down" without losing the data stored in RAM: in "stop mode" with the real-time clock still running, the CPU and RAM require 0.3 µA, which would last 2.4 years if the battery were fully charged (the Flex probably actually shuts itself down when the battery is down to about 5% or 10% of a full charge). Not even the alarm settings, the most "permanent" of the data stored in Flex, belongs in Flash: because in the event of a complete shutdown, the real-time clock stops and the device no longer knows what time it is. After recharging the battery, the Flex needs to find out what time it is, and it can learn its alarm settings at the same time.
Many details were found in the iFixit teardown, but I have added much more.
CPU : STMicroelectronics (formerly SGS-Thomson) STM32L151C6. (STM32 = ARM-based 32-bit; L = low-power; 1 = Cortex M3; 5 = mainstream line (bigger memory); 1 = no LCD display driver; C = 48-pin package; 6 = 32 kib of flash memory and 10kib of RAM)
CPU: ARM Cortex M3
Frequency: from 32 kHz (drawing 9µA of power) up to 32 MHz (214 µA per MHz, e.g. 1 MHz = 214 µA and 32 MHz = 6.8 mA)
At maximum speed of 32 MHz, it gets 33.3 Dhrystone 2.1 MIPs.
(Based on battery specs below, we know it is running at an average of about 600-740 KHz. Because it is 32-bit and RISC, with hardware multiply and other improvements, the resulting performance is comparable to the fastest personal computers in 1984: the first Macintosh or an 8086-based IBM PC, machines that ran at 5 to 8 MHz)
Full Thumb (16-bit) and Thumb-2 (32-bit) instruction set. 3-stage pipeline, 1-cycle hardware multiply, hardware divide, saturated math
RTC (Real-Time Clock)
I/O specifications: 37 GPIO pins; 14-channel, 12-bit ADC and two 12-bit DACs; 2 comparators; 13 capacitative sensing channels; 1x USB 2.0; 3x USART; 2x SPI; 2x I2C
Memory : 10 kib RAM, 32 kib Flash
Bluetooth : Nordic nRF8001 Bluetooth transciever (connected via a UART interface); 2 µA standby current; 4-30 µA long-term average current depending on polling interval; 12.5 mA peak current.
NFC : Loop antenna generating a modulated magnetic field over a range of roughly 1 cm, for use with NFC-enabled smartphones, packaged in a flexible thin film. There is a tiny chip in the antenna, bare (with no package, just microsoldered to the thin-film conductor of the antenna) roughly 0.6 mm square. It is probably similar to the popular NTAG203.
Vibration Motor : coin/pancake form factor, 8 mm diameter, 2.7 mm thick. Labeled "46C1A", which I couldn't find. Based on specs of similar products that I did find, it probably uses about 50 mA at 2 V if run continuously. This is too much for the battery (see below), therefore it is pulsed.
Power Supply Unit : Texas Instruments BQ24040 Li-Ion / Li-Pol charger/voltage regulator, using USB VBUS/GND input
Battery : Tenergy 3.7V 19mAh Lithium-Polymer (PP031012AB) (Approx. $8.00 at All-Battery.com) (Charging voltage 4.2V at max 9 mA, Nominal 3.7V, max. discharge current 19mA; long-term storage temperature -20°C to 35°C; recommended storage temp. 20°C.)
Since the unit typically runs for five days on a full charge, we know the Flex cannot be using more than an average of 158 µA, corresponding to an average CPU clock speed of 600-740 kHz depending on how much of the power budget is being used by the accelerometer and Bluetooth.
Replacement : After close study of the iFixit teardown, using appropriate tools and working very carefully, I think one could cut open just the portion of the outer case that covers the battery, then get the old battery out, disconnect it by cutting the two wires, and install a replacement battery. It is crucial not to cut into the battery itself! Lithium (the active substance in the battery) catches fire when exposed to water and air. The battery's own foil casing must remain intact.
The unit will no longer be waterproof, but perhaps that is acceptable for your use profile.
This page was written in the "embarrassingly readable" markup language RHTF, and was last updated on 2019 Jan 05. s.11