Teardown

I won’t explain. Just YouTube it if you’re having trouble.

There are a few gotchas on the way however.

One, mine has drivers with inverted aluminium domes. Aluminium is SOFT. Combine it all with a freshly undone screw that I’ve failed to catch, and we have dents in the dome. Oops! (see project gallery).

Phew, it was a small screw. Larger ones that hold the drivers will probably make it all the way through, be careful. Drivers from older revisions of Flip 4 seem to be plastic, much more impenetrable.

Another gotcha: it looks like the speakers are connected to PCB with connectors, but these are not connectors, you can’t undo them. The only way to get the pcb out is to desolder the wires from the drivers.

The pcb

Says “FLIP4_MAIN_PV2.0”.

Contains:

·        Bluetooth subboard, based on CSR8675 specialized SoC by Qualcomm. It looks like it is possible to reconfigure the firmware. I haven’t found a full datasheet for the chip yet, it’s all horribly proprietary =(

·        MX25U3235 15MB SPI flash on BT subboard. There is very little communication going on, makes me wonder what is it being used for.

·        Amplifier based on TPA3130 from TI. It’s a fairly powerful stereo class-D amp, capable of up to 15W per channel.

·        The amp is powered from a boost converter, that converts single Li-ion cell voltage to 5-11 V. The voltage is dynamically adjusted to match for signal level, probably for improving battery life at low loudness. Boost converter chip is probably MP9428 (says MPHM9428 on the IC itself). The chip looks very similar to MP3428A by Monolithic Power Systems. If that is the chip, it can go up to 22 V, and can potentially give this amplifier quite a power boost. So, JBL Flip 4 can be considered as a nice board that can be easily hacked into a high power amplifier powered by a single Li-ion cell.

·        A li-ion charger based on MP2637. Also can work as 5V boost converter, but this functionality is unused. Standby power is provided by a 3.3V LDO straight from Li-ion, and main power for peripherals is connected through a mosfet, and a bunch of other stuff.

·        An IO expander chip.

·        A bunch of opamps, with unclear purpose. I suspect, they are used as signal level detectors, to control the amp power supply.

The service manual for Flip 3 is available here: https://elektrotanya.com/jbl_flip_3_sm.pdf/download.html

I know I know, it’s not Flip4. But, it has full schematics, they are reasonably similar, and will help you trace out the pcb should you want to.

Drivers

Who knows what they are... probably something custom by JBL. They look very beefy. (see photos in project gallery)

I have measured their motor performance (BxL), got 3.0 newtons of thrust per amp of current. DC resistance is 3.52 Ω, so it’s 1.6 N rms thrust at 1 W input power. It’s an incredibly powerful motor for this small a speaker, which is obviously there to push some bass from a small enclosure. From this value, I can suggest a replacement driver – a very comparable one can be extracted from Blitzwolf BW-3 bluetooth speaker... If you can buy one – they appear to be obsolete, and no longer available.

Passive radiators

They are tuned to 65-71 Hz (the value I get depends on amplitude, not sure why).

DSP

The input-to-amplifier-output frequency response of this speaker is not flat. That is how they achieve that impressive bass – there is built-in equalization.

At first, I thought that the equalization is done in analog, utilizing these 8 opamps that are on the board. But no. All the equalization is done in the DSP of the Bluetooth chip. What are these amps for is not quite clear to me, but they appear to be used as peak detectors, selecting the boost converter regulation voltage, to adjust amp supply to match signal level.

Here’s the frequency response of this DSP:

The equalizer curve is different for when Connect+ is on and off. DSP can be switched on by pressing and holding BT+Vol.Down for 12 seconds, when there is no music playing. 0db was assigned to equal the flattest part of "DSP off" curve; I didn't check the actual amplitudes at BT chip inputs and outputs.

Interesting, isn’t it? Default DSP has a huge peak to amplify bass, a pronounced peak at 8.5 kHz, and a deep dip at 17 kHz. The bass lower than 60 Hz is cut off sharply, likely to avoid loudspeaker self-destruction in bass-reflex design. 

With Connect+, the bass boost is less aggressive, bass roll-of is slower, there is no peak at 8.5k, and no dip at 17k. Overall, quite a bit better in my opinion.

Even more peculiar is step response of this dsp ("default" dsp).


Yellow trace is the input signal (aux), blue trace is at power-amp input. The input was generated by my smartphone, I’ve set it up to generate a 2 Hz sawtooth; the decay is mostly due to in-phone high-pass filtering.

I’m afraid, in my opinion, that pulse response just sucks hard. There is a sharp peak right where the transition should be. It is followed by a strange long waveform that looks almost like a sweep. That is, I would expect pretty horrible delays in bass compared to the remaining frequencies, thanks to DSP alone (passive radiators will add even more delay). The total length of this transient is about 30 ms. Nonetheless, I can’t claim to pick up this delay by ears.

I suspect that this delay may be intentional. Remember that dynamic amp power supply? It has quite big filtercaps, so maybe that slow attack helps avoid distortion at sudden strong signals.

Overall aux to speaker delay due to dsp is about 30 ms, it drops down a bit if the dsp is disabled.

Speaker Frequency Response



Brown curve is regular frequency response (I was measuring right channel only, to avoid interference effects). Blue curve is with dsp off (dsp can be switched off by pressing and holding BT + Vol.Down buttons for about 10 seconds).

DSP does a good job of compensating the bass response from 200 hz to about 80 Hz. There seems to be even too much compensation, however since I’m measuring the speaker in a room, and room does change frequency response a LOT, it may be not the speaker’s fault.

DSP-induced peak at 8.5 kHz and dip at 17 kHz do not cause shocking changes to frequency response. The dip is in a range where driver’s response starts to drop off fast, and it’s already in a range where my ears are not very sensitive, so I think it is unnoticeable.

But wait! The 8.5 kHz peak in dsp curve was 10 dB high, but the change in audio frequency response is a mere 5 dB… Where did the remaining 5 dB go?? Makes no sense. Must be ALIENS!

The overall shape of frequency response at high frequencies STRONGLY depends on the exact measurement geometry (due to beaming of sound), so it really makes little sense discussing it. I would definitely prefer to see dsp being flat there, but it doesn’t matter much.

My biggest dislike about Flip 4 is the hard hard hard cutoff of bass below 70-80 Hz. That cut is a consequence of bass-reflex design: not only does the mere use of bass-reflex cause acoustic short-circuit at low bass, but it is even worse because of dsp cut-off (which is important for keeping distortion low, and to protect the drivers from excessive displacement).

Button combinations

Picked up from here: http://4pda.ru/forum/index.php?showtopic=838480

#1. Press and hold Bluetooth + Vol.Down for 10 seconds -> disable DSP. There speaker should not be playing music, otherwise nothing happens. After reboot, the DSP is switched on again; apparently, there is no way to make this stick.

Warning: playing low bass with DSP off at max volume may damage the drivers. Some call this mode “bass mode”

#2. Press and hold Connect+Vol.Down for 2 seconds -> the speaker speaks out loud its firmware version.

#3. Press and hold Connect + Vol.Up for 10 seconds -> exhibition mode on/off. The speaker won’t connect to Bluetooth, and only work through 3.5 mm aux. It won’t switch on unless usb charging is connected.

#4. PlayPause+Vol.Down for 10 seconds -> DFU mode (for tweaking parameters). The speaker will be recognized as a USB device by PC, and one can connect to it with CSR BlueSuite. Messing with this mode can brick the speaker, be careful. Leaving is difficult. The best way seems to be clicking "Reset" button in BlueSuite. I'm not quite sure, how to leave it without connection to PC. Some sources suggest holding PlayPause + Vol.Up + Vol.Down for a few seconds, then powering up the speaker. It didn't work for me. It seems to leave the mode by itself, just leave the speaker alone for a few minutes. 

#5. PlayPause + Vol.Up + Vol.Down -> hard reset (should simulate disconnecting the battery).

#6. PlayPause + Vol.Up for 2 seconds -> factory settings (erases history of paired devices).

#7. PlayPause doubleclick -> next song

#8. Clicking Connect+ while music is playing -> changes EQ between two settings (TODO: compare frequency responses)

Hackability

The amplifier has analog input, and has no built-in DSP. It has a plenty of power. And together with onboard powerful boost converter that can probably go up to 22 V, the pcb can be used to make something more powerful, such as car audio.

Bluetooth however is inseparable from dsp; switching it off permanently is so far impossible. That means, you can’t really re-use this BT chip for anything, other than a fancy power switch. That’s unfortunate, because the ability to pair two JBL Flips 4 into a stereo setup is a very nice feature.

It may be possible to write your own firmware for the Bluetooth chip. But it requires highly proprietary CSR software, which I could not obtain so far....

Now, just a quick link train, if you want to brick your Flip 4..

https://www.eevblog.com/forum/projects/programming-off-the-shelf-csr8635-module/

https://www.youtube.com/watch?v=7gdZsPkljoo

https://github.com/lorf/csr-spi-ftdi  You can find links to the software for confiuring the chip (CSR BlueSuite) in the issues of this project. It lets you extract and upload firmware binary, and edit persistent storage data (it's something like Windows Registry). It does not contain IDE, compiler, or debugger, although it does have some sort of command-line tool that may do something debug-ish.

I have not yet found a leaked IDE.

http://www.52bluetooth.com/csr/adk2.5.1/
http://byteus.tech/introduction-to-csr8670/

See some parameter hacks in project logs.