Every episode with Jieli in Love Between Fairy and Devil (13/58) Episode 17 Part 2/3 - The ranxi flower
seen from Germany
seen from China

seen from United States

seen from T1
seen from United States
seen from Netherlands
seen from Macao SAR China

seen from United States

seen from India
seen from Sri Lanka

seen from United States
seen from China
seen from United States
seen from United States

seen from United States

seen from Australia
seen from China
seen from United States
seen from United States
seen from United States
Every episode with Jieli in Love Between Fairy and Devil (13/58) Episode 17 Part 2/3 - The ranxi flower

Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
Free to watch • No registration required • HD streaming
JL Engineer's Work Log 3: Common Issues When Adding Custom Prompt Tones on Jieli AC6966B
Introduction When developing Bluetooth speakers with Jieli’s audio SoCs, adding custom prompt tones often brings up a few common issues – popping noises during power on/off, unsupported audio formats, etc. This guide walks through these issues and their solutions using the Jieli AC696N development board.
1. Pop/click noise when playing prompt tones during power on or off
First, listen to the original prompt tone file – is the noise already in the audio itself?
On the development board, the SDK code already includes the following two lines to handle this (add them if missing):
// Power on: disable PA before ramping up
// Power off: disable PA before shutdown
Explanation: When the speaker is powered on or off, the amplifier (PA) and speaker can produce a pop/click sound – this is normal behavior. The solution is to disable the power amplifier before the power‑on sequence, and also disable it before shutting down. The SDK example has these lines written by default. During debugging, you can verify whether the pop disappears after adding them.
2. Added prompt tones in different formats – MP3 works, but WTG doesn't
Double‑check the file format – don’t accidentally mix up extensions.
For WTG format, you need to enable the corresponding codec in the configuration tool.
Different tone formats require different encoder support. Enable the codec for WTG if you really need it. Recommendation: Stick with MP3 for prompt tones – it’s simpler and works out of the box.
Summary By understanding the power amplifier timing (to eliminate pops) and using MP3 format for tones, adding custom prompt tones on the Jieli AC696N platform becomes straightforward. All steps have been tested on the actual development board.
Every episode with Jieli (& Shangque) in Love Between Fairy and Devil (12/58) Episode 17 Part 1/3 - Scooby-dooing
JL Engineer's Work Log 2: Adding Custom Prompt Tones on Jieli Bluetooth Audio SoC (AC696N Series/AC6966B)
1. Introduction
The JL AC696N development board comes with predefined prompt tones. Since developers often need to add their own tones, this guide uses the AC6966B chip as an example to explain how to add custom prompt tones step by step.
2. Detailed Instructions
2.1 Configuration Tool
Custom prompt tones need to be added via the configuration tool. Typical path: ac696n_soundbox_sdk_v1.7.0_patch01_dev_board_v0.0.2\cpu\br25\tools\soundbox\standard
Open the configuration tool → select “Prompt Tone Configuration” → click “Add Prompt Tone” → click “Open”.
After clicking “Open”, choose your custom tone file – the tool will auto‑fill the file path.
Click “Save” – the configuration tool part is now complete.
2.2 Adding the Custom Tone File
Download or create your own tone file (e.g., water.mp3 or .wav). Add the file to the extra_tones folder (follow the same structure as existing tones). Use an English name for the file (e.g., water.*).
2.3 Code Modifications
In tone_player.h, add the custom tone name and path following the existing pattern. Example: #define TONE_RES_ROOT_PATH "tone/water.*"
In tone_table.c (inside the const char *tone_table[] array), add a new entry: [IDEX_TONE_WATER] = TONE_RES_ROOT_PATH"tone/water.*", where water matches your file name.
2.4 Playing the Tone
After the above steps, use the function from tone_player.c to play the tone. Example: tone_play(tone_table[IDEX_TONE_WATER], 1)
Summary
That's all the modification needed. The new tone can be triggered with a simple API call. This approach works on the AC696N series and similar Jieli audio SoCs.
Engineer's Work Log: Implementing Button-Triggered Pairing for TWS Paired Speakers on Jieli AC696N
Issue A customer is developing TWS paired speakers using the Jieli AC696N development board. They need to implement a “button-triggered pairing” function, but are unsure which IO pin to connect the button to and how to configure it in the code.
Analysis & Reproduction When reviewing the Jieli AC696N TWS paired speaker example project, we found that pairing is typically triggered by an AD key or a regular GPIO key. The example project reserves the pairing button logic, but does not explicitly state the hardware connection or software configuration mapping. The correct setup requires cross-referencing the schematic diagram and the key scan module in the code.
Solution Open the TWS paired speaker example project and locate the key configuration section:
Hardware connection: It is recommended to connect the pairing button to PB4 (which is defined as an AD key channel in the Jieli AC696N factory firmware). Different buttons are distinguished by their AD sampling values.
Code configuration: In adkey_table.c (or the user key configuration table), find the macro KEY_TWS_SEARCH_REMOVE_PAIR (pairing function). Bind this macro to the specific AD key value.
Modification example: In the key mapping array, set the trigger event of the corresponding AD key to KEY_TWS_SEARCH_REMOVE_PAIR, and ensure the button press duration meets the default pairing trigger condition (e.g., long press for 3 seconds).
After completing the configuration, compile and burn the firmware. The button will then trigger TWS pairing.
Summary The customer reported “OK” after half an hour following the guidance. The AC696N TWS example project already contains a complete pairing flow. Developers only need to correctly bind the button event to the hardware IO. It is recommended to refer to the key configuration section and comments in the AC6966B TWS paired speaker example project, and to use AD keys to save IO pins. This is a common sticking point in TWS paired speaker development – recorded here for fellow engineers.

Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
Free to watch • No registration required • HD streaming
Every episode with Jieli (feat. Shangque) in Love Between Fairy and Devil (11/58) Episode 16 Part 3/3 - What's eating Dongfang Qingcang?
Every episode with Jieli (& Shangque) in Love Between Fairy and Devil (10/58) Episode 16 Part 2/3 - Defended
JL JieLi AC696N Series Development GPIO Control Encyclopedia: Modes, APIs, and Special Pins
Introduction
GPIO configuration seems simple, but there are plenty of cases where things go wrong. If the drive strength isn't set correctly, an LED might be too dim or not light at all. Without proper pull-up/pull-down configuration, button detection can be erratic. The most troublesome is the USB pin—it might default to a regular GPIO, and if you forget to switch its function, your PC won't recognize the device.
The JL JieLi AC696N's GPIOs are quite versatile, with three drive strength levels (normal, strong, super strong) and various APIs. However, these functions are scattered throughout the documentation, and you often have to search for a while when using them. I've gone through the common GPIO configurations on the AC696N development board and organized them into a table, so you can quickly look them up when writing drivers.
I. GPIO Operating Modes
Input Mode: Can be configured as floating, pull-up, pull-down, or analog (for ADC). In input mode, output is disabled. The I/O status can be read via the input data register. Pull-up and pull-down input are straightforward—the default level is determined by the pull-up or pull-down. Floating input level is uncertain and depends entirely on the external input. Analog input is used for ADC sampling.
Output Mode: Output high/low level. Drive strength has three levels: normal, strong, and super strong.
Direction: Input, output. No open-drain.
Pull-up/down: All I/Os have pull-up/down resistors. Fixed resistance values, but differ between chips and pins (check datasheet). Pull-up/down only available in input mode.
Level: Output high (voltage close to VDDIO), output low (equivalent to ground, current sinking).
Drive strength: Normal, strong, super strong. Only very few I/Os support super strong.
State: Digital or analog. Analog state is used for AD detection in input mode.
Reading: In digital input mode, you can read the I/O voltage level. The voltage applied to an I/O must not exceed VDDIO; otherwise, reverse current may affect other I/Os.
II. Core API Function List
III. Special Pin: USB DP/DM
USB pins may default to regular GPIO. To switch them to USB function, call:usb_iomode(0); // parameter 0: switch to USB function
IV. Important Note
The output level of a GPIO is determined by the VDDIO supply voltage. If you need a specific I/O to output 3.0V, you must set the VDDIO supply to 3.0V.
Summary Memorize these few GPIO APIs, and you'll be covered for most tasks. A few common pitfalls:
USB pins: don't forget to call usb_iomode(0) to switch to USB function, otherwise the PC won't recognize the device.
ADC input pins: remember to use gpio_set_die() to disable digital function, otherwise readings will be inaccurate.
Drive strength: choose according to your needs. For driving an LED, strong drive is unnecessary; normal drive works fine and saves power.
I recommend trying each API on the AC696N development board, measuring the levels with a multimeter to confirm correct configuration before moving to your product board. This will avoid having to trace hardware issues back to software configuration later.