CC2511 Dongle User Manual Rev. 1.0
CC2511 Dongle User Manual Rev. 1.0
CC2511 Dongle User Manual Rev. 1.0
CC2511 Dongle
User Manual
Rev. 1.0
SWRU082 Page 1 of 24
CC2511 Dongle
Table of contents
1 INTRODUCTION ......................................................................................................................3
2 ABOUT THIS MANUAL ..........................................................................................................3
3 DEFINITIONS............................................................................................................................3
4 CONNECTING CC2511 DONGLE TO SMARTRF04EB. ....................................................4
5 USING SMARTRF04EB AS AN IN-CIRCUIT EMULATOR (ICE)....................................6
5.1 DEBUGGING USB FIRMWARE ........................................................................................................7
5.2 KNOWN PROBLEMS ........................................................................................................................8
6 CC2511 APPLICATION EXAMPLES ....................................................................................9
6.1 WIRELESS MOUSE / PRACTICAL JOKE ...........................................................................................10
6.1.1 Software components .......................................................................................................................................................... 10
6.1.2 Installing the application .................................................................................................................................................... 10
6.1.3 Running the application...................................................................................................................................................... 10
6.2 WIRELESS USB TO SERIAL PORT CONVERTER .............................................................................11
6.2.1 Software components .......................................................................................................................................................... 11
6.2.2 Installing the application .................................................................................................................................................... 11
6.2.3 Running the application...................................................................................................................................................... 12
6.3 WIRELESS WINAMP REMOTE CONTROL .......................................................................................13
6.3.1 Software components .......................................................................................................................................................... 13
6.3.2 Installing the application .................................................................................................................................................... 13
6.3.3 Running the application...................................................................................................................................................... 14
7 USB DEVELOPMENT FRAMEWORK................................................................................15
7.1 CC2511 USB EMBEDDED FIRMWARE LIBRARY ...........................................................................15
7.2 WINDOWS USB DRIVER FRAMEWORK .........................................................................................16
7.2.1 Windows USB driver license............................................................................................................................................... 17
7.3 OTHER FIRMWARE MODULES AND LIBRARIES ..............................................................................17
8 CC2511 DONGLE HARDWARE DESCRIPTION ..............................................................18
8.1 USER INTERFACE .........................................................................................................................18
8.2 USB INTERFACE ..........................................................................................................................18
8.3 DEBUG CONNECTOR ....................................................................................................................19
8.4 GENERAL PURPOSE I/O CONNECTORS ..........................................................................................19
8.5 CUTAWAY SECTION .....................................................................................................................19
8.6 RF PERFORMANCE OF PCB ANTENNA .........................................................................................19
9 CC2511 DONGLE SCHEMATICS ........................................................................................20
10 DOCUMENT HISTORY .........................................................................................................24
SWRU082 Page 2 of 24
CC2511 Dongle
1 Introduction
Thank you for purchasing a SmartRF®04DK Development Kit.
Please note that Chipcon uses the term SmartRF®04DK as a collective term for all
development kits on the SmartRF®04 platform. This development platform supports
evaluation, development and prototyping using the SmartRF®04 products from Chipcon.
3 Definitions
SmartRF04EB Evaluation Board. Main board with LCD, USB interface,
LEDs, pot-meter etc. Platform for the Evaluation Modules
(EM, see below).
SmartRF®04DK A collective term used for all development kits for the
SmartRF®04 platform, i.e. SmartRF04EB + EM.
CC2510EM CC2510 Evaluation Module, a small plug-in module for
SmartRF04EB, should be used as reference design for
antenna and RF layout.
CC2511 USB Dongle CC2511 Evaluation Module, a small USB dongle.
SmartRF04EB, should be used as reference design for
antenna and RF layout.
SoC System on a Chip. A collective term used to refer to
Chipcon ICs with on-chip MCU and RF transceiver. Used
in this document to reference the CC2430 and the
CC2510.
ICE In Circuit Emulator.
CC2510 application examples Application examples using only the CC2510.
CC2511 application examples Application examples using the CC2511 USB Dongle
together with a CC2510.
SWRU082 Page 3 of 24
CC2511 Dongle
4 Connecting CC2511 Dongle to SmartRF04EB.
Please see the “CC2430DK_CC2510_CC1110_User_Manual” for more information on the
SmartRF04EB and how to use the CC2510EM.
Make sure to install SmartRF® Studio before connecting the SmartRF04EB to a PC.
SmartRF® Studio can be downloaded from the www.chipcon.com or www.ti.com/lpw
The CC2511 have a 2 wire debug interface that is used for chip programming and debugging.
When connecting this interface to the SmartRF04EB USB MCU, the CC2511 can be
programmed from the Chipcon Flash Programmer software and debugged from IAR
embedded workbench..To connect the CC2511 Dongle to the SmartRF04EB follow these 6
steps:
1. Turn off the SmartRF04EB power by moving the power switch to the left position. See
Figure 3.
4. Connect the CC2511 Dongle to the SmartRF04EB with the supplied 10 pin cable.
The cable should be mounted between the “SoC debug” connector on the CC2511
Dongle and the “P14 SoC debug / flash” connector on the SmartRF04EB. Make sure
pin 1 is connected to pin 1. This cable connects the debug interface and GND
between the two devices, however the CC2511 Dongle is not powered trough this
cable.
The CC2511 Dongle should only be powered by one of the two sources at a time.
Do not connect the USB cable to the CC2511 Dongle while it is powered from the
SmartRF04EB.
The SmartRF04EB have a level converter on the debug connector, so the
SmartRF04EB and the CC2511 Dongle may have a different power supply voltage.
SWRU082 Page 4 of 24
CC2511 Dongle
The CC2511 can now be programmed with the Chipcon Flash Programmer software. The
firmware on the CC2511 can also be debugged using the IAR embedded workbench
debugger.
Please see the IAR user manual and the Chipcon Flash Programmer user manual for more
details.
SWRU082 Page 5 of 24
CC2511 Dongle
5 Using SmartRF04EB as an In-Circuit Emulator (ICE)
The SmartRF04EB can be used as ICE for the CC2511
To use the SmartRF04EB as ICE, the IAR Embedded Workbench software must be installed.
The Embedded Workbench is a C-Compiler, Simulator, and ICE debugger. See the IAR
Embedded Workbench documentation supplied with the kit for instructions how to set up the
ICE debugger for use as an ICE.
When the SmartRF04EB is connected to a PC with the USB port, the debugger will connect
to the SmartRF04EB. Several SmartRF04EB can be connected to USB ports simultaneously.
A selection window will display the connected SmartRF04EB, and the user can select which
device to load.
For custom PCB’s with the CC2511, it is recommended to include a pin header or test points
to allow in-circuit emulation or programming using SmartRF04EB or other 3rd party
programming tools. Use the CC2511 Dongle as a reference. Please see the
CC2510/CC2511section of the Chipcon web site for an updated list of 3rd party programming
tools.
When using smartRF04EB as emulator for external target debugging any CCxxxxEM module
must be removed
The pin-out used on the SmartRF04EB is explained in Table 1 and Figure 4. The connector
includes 4 SPI control signals. These are currently not used, but they are included to give
users flexibility.
Pin Function
1 Gnd
2 VDD
3 Debug Clock(DC)
4 Debug Data(DD)
5 CSn(optional)
6 SCLK(optional)
7 Reset_N
8 MOSI(optional)
9 3.3V VDD, alt. NC
10 MISO
Table 1: P14 SOC debug connector pin-out
VDD note: The SmartRF04EB includes a voltage converter to support programming and
debugging of external systems with different voltage than the SmartRF04EB. The debug
connector includes two VDD connections on pin 2 and pin 9. The function is different for these
connections.
Pin 2 VDD supplies voltage to the voltage converter. If the target application is self powered
pin 2 should be connected to VDD to assure that the correct supply voltage is used for the
voltage converter. This pin must always be connected to VDD.
Pin 9 VDD supplies 3.3V from the SmartRF04EB. If the target application is powered from the
SmartRF04EB supply during programming and debugging this pin can be connected to VDD.
If the target voltage differs from 3.3V, this pin should not be connected.
On the CC2511 Dongle this pin is not connected. Hence the CC2511 Dongle must be
powered from a separate USB cable or a separate cable connecting pin 9 on “test pins” / P4
to VDD on the SmartRF04EB. See chapter 4 for details.
SWRU082 Page 6 of 24
CC2511 Dongle
1 2
1. GND 2. VDD
3. DC 4. DD
7. Reset_N
Obviously inserting and using breakpoints in the firmware during debugging will be extremely
useful to pinpoint bugs and follow code execution. And they can and should be used. But they
will also stop the code execution on the CC2511 and may cause the device to act in conflict
with the USB specification. This can lead to the PC disconnecting the CC2511 Dongle,
sending a USB reset or worst case the operating system may crash.
If the firmware contain bugs that make the PC disconnect the CC2511 Dongle it may be
necessary to disconnect the USB cable, and power the CC2511 Dongle from the
SmartRF04EB in order to reprogram it.
SWRU082 Page 7 of 24
CC2511 Dongle
5.2 Known problems
When using the debug interface through the level-converter on the SmartRf04EB. (Shown in
Figure 1 and Figure 2) it might become unstable. This problem is more likely to occur a low
voltages or with crosstalk in the cable at high interface speed.
First make sure that the 10 pin flat cable used to connect the CC2511 USB Dongle to the
SmartRF04EB is as short as possible.
Next it might be necessary to reduce the debug interface speed in order to achieve stable
operation.
In the IAR workbench do the following:
• Highlight the project name by clicking on it in the “Files” window. (See Figure 6)
• Go to Project -> Options…
• Select the Category “Chipcon”
• Click on the “Target” tab.
• Check the “Reduce interface speed” option. (See Figure 7)
Highlight the
project name
Check the
“Reduce interface
speed” option.
SWRU082 Page 8 of 24
CC2511 Dongle
6 CC2511 application examples
This section describes the application examples available for the CC2511. These application
examples focus on how to use the USB on the CC2511. The examples is available both as
source code and ready-to-upload .hex files from the Chipcon website.
There is also a CC2510 Application Example available. This example provides valuable
information about setup and usage of different modules found in both CC2510 and CC2511.
Please see the “CC2430DK_CC2510_CC1110_User_Manual” for more information about this
Application Example.
All the application examples use the same packet format and radio frequency. This is done to
make it simple to observe the radio activity on the Chipcon General Packet Sniffer. After
installing the packet sniffer choose the “CC2511 App. Example protocol” to see the radio
traffic. Figure 8 show the packet sniffer observing radio traffic in the “Wireless USB to Serial
port converter” application example.
See the Chipcon General Packet Sniffer user manual for more information.
SWRU082 Page 9 of 24
CC2511 Dongle
6.1 Wireless mouse / practical joke
This application demonstrates the use of the CC2511Dongle as a USB composite HID
(Human Interface Device), with both keyboard and mouse.
The application will work on most operating systems.
This application example uses the USB framework found in the CC2511 firmware library to
setup the USB on the CC2511 Dongle and to handle all USB standard requests. In addition
the Class requests required by the HID device class are implemented in a separate file.
The radio communication between CC2510EM and CC2511 Dongle is done using the RF part
of the CC2511 firmware library.
See “Device Class Definition for Human Interface Devices (HID)” found on
http://www.usb.org/developers/devclass_docs/HID1_11.pdf for more information about the
HID class.
• simple_hid_eb.hex
The CC2510 EM firmware is found in
”CC2511DK\embedded_sw\App_Ex\simple_hid\simple_hid_eb\”.
2. Connect the CC2511 Dongle to the other SmartRF04EB and program it with the flash
image simple_hid_dongle.hex, using IAR workbench or the Chipcon FLASH
programmer.
(See “CC2430DK_CC2510_CC1110_User_Manual” for more information).
The pot-meter “RT1” on the SmartRF04EB is used to choose between the “simple mouse”
and the “practical joke” mode. Turn the pot-meter fully counter clockwise to select the “simple
mouse”, fully clockwise to select the “practical joke” mode.
In “simple mouse” mode the joystick on the SmartRF04EB can be used as a mouse. The
button “S1” is the left mouse button, pushing the joystick is the right mouse button.
While in simple mouse mode the CC2510 will calculate the RSSI (Receive Signal Strength
Indicator) on the packets received from the CC2511 Dongle and display it on the LCD screen.
The RSSI value is updated each second.
SWRU082 Page 10 of 24
CC2511 Dongle
6.2 Wireless USB to Serial port converter
This application example is a wireless USB to serial port (RS232) converter.
It creates a virtual serial port in Windows. Data sent to this virtual serial port will be sent to the
CC2511 Dongle over USB, then to CC2510 EM over radio and finally out on the serial port on
the CC2510 EM / SmartRF04EB.
Data sent to the serial port on the SmartRF04EB will be transferred to the virtual serial port in
Windows.
Full duplex and flow control on the serial port (CTS and RTS lines) are supported. The radio
link has CRC check and automatic retransmission for error free operation.
The application uses a CDC driver found in Windows, if used on other operating systems a
suitable driver must be found/created. The Windows driver is rather slow and will limit the
maximum throughput to approx 70 Kbit/s.
This application example uses the USB framework found in the CC2511 firmware library to
setup the USB on the CC2511 Dongle and to handle all USB standard requests. In addition
the class requests required by the CDC device class are implemented in a separate file.
The radio communication between CC2510EM and CC2511 Dongle is done using the RF part
of the CC2511 firmware library.
The application example also uses the buffer module in the library to handle data buffering
and the timer4 manager module for timing.
• rs232_to_usb_eb.hex
The CC2510 EM firmware is found in
“CC2511DK\embedded_sw\App_Ex\rs232_to_usb\rs232_to_usb_eb\”.
• CC2511ApExSerialPort.inf
The windows driver for the Wireless USB to Serial port, found in
“CC2511DK\pc_sw\App_Ex\rs232_to_usb\driver\”.
1. Attach the CC2510EM to a SmartRF04EB and program it with the flash image
rs232_to_usb_eb.hex, using IAR workbench or the Chipcon FLASH programmer.
(See “CC2430DK_CC2510_CC1110_User_Manual” for more information).
2. Connect the CC2511 Dongle to the other SmartRF04EB and program it with the flash
image rs232_to_usb_dongle.hex, using IAR workbench or the Chipcon FLASH
programmer.
(See “CC2430DK_CC2510_CC1110_User_Manual” for more information).
3. Disconnect the programmed CC2511 USB Dongle from the SmartRF04EB and plug it
into a free USB port on the PC.
SWRU082 Page 11 of 24
CC2511 Dongle
When Windows have finished installing the device, a new serial port will appear in the device
manager in Windows. See Figure 9.
The Windows driver will only work if the “Ti Wireless USB to Serial” is assigned to COM1 to
COM9. (In Figure 9 it is assigned to COM6)
If there are many COM ports installed on the PC, Windows may chose to assign it to a
number higher than 9. If that happens it must be changed. Right click on the “Ti Wireless USB
to Serial” in the device manager and choose “Properties” -> “Port settings” -> “Advanced” to
change.
Connect the CC2510EM to the SmartRF04EB and power it. Use the joystick and the S1
button to select the settings for the UART. The settings can only be selected once, if they are
wrong, turn power off and on to reset the CC2510EM and select UART settings again.
These settings only apply to the UART on the CC2510/SmartRF04EB, the settings used on
the Virtual COM port on the PC can be different.
Changing the settings on the CC2510EM/SmartRF04EB will not affect the settings used in the
Virtual COM port and visa versa.
To bind the CC2510EM to the CC2511 Dongle, hold them close together and push S1 on the
SmartRF04EB. The RF protocol found in the CC2511 firmware library uses kiss-binding which
mean that the CC2511 Dongle use the RSSI (Received Signal Strength Indicator) to only
accept bind requests from units that are in close proximity. If the two devices are too far apart
(more than approx 1 meter) the CC2511 will not accept the bind request.
To test the link connect a RS232 cable between a PC and the SmartRF04EB, start
HyperTerminal in Windows (Start -> Programs -> accessories -> Communications ->
HyperTerminal)
Connect one HyperTerminal window to the Virtual COM port, and another HyperTerminal
window to the COM port connected to the CC2510EM/SmartRF04EB.
Text written to one window will be sent to the other one.
SWRU082 Page 12 of 24
CC2511 Dongle
6.3 Wireless WinAmp remote control
This application example is a wireless remote control for WinAmp media player. It is a two-
way remote, which display the song information of the song played on the LCD screen on the
SmartRF04EB.
The communication between the CC2511 Dongle and WinAmp is handled by a custom
WinAmp plug-in. Hence this remote control will work with WinAmp only.
This application example uses the USB framework found in the CC2511 firmware library to
setup the USB on the CC2511 Dongle and to handle all USB standard requests. In addition it
demonstrates the use of Vendor requests in the USB framework. On the PC the CUDAL
library is used to create a custom driver (see chapter 7.2 Windows USB driver framework).
The radio communication between CC2510EM and CC2511 Dongle is done using the RF part
of the CC2511 firmware library.
The application example also uses the buffer module in the library to handle data buffering
and the timer4 manager module for timing.
• winamp_remote_eb.hex
The CC2510 EM firmware, is found in
“CC2511DK\embedded_sw\App_Ex\winamp_remote\winamp_remote_eb\”
• gen_chipcon_remote.dll
The WinAmp plug-in, is found in
“CC2511DK\pc_sw\App_Ex\winamp_remote\WinAmp_pluginn”
2. Connect the CC2511 Dongle to the other SmartRF04EB and program it with the flash
image winamp_remote_dongle.hex, using IAR workbench or the Chipcon FLASH
programmer.
(See “CC2430DK_CC2510_CC1110_User_Manual” for more information).
4. Install WinAmp.
6. Disconnect the programmed CC2511 USB Dongle from the SmartRF04EB and plug it
into a free USB port on the PC.
SWRU082 Page 13 of 24
CC2511 Dongle
8. If windows ask for the file “cudal.sys” or “cudal98.sys”, point to “cudal.sys” or
“cudal98.sys”.
10. The USB dongle may have to be removed and reinserted once to the PC for the
application to work.
2. Make sure the CC2510 USB Dongle is plugged into a USB port on the PC.
• The song title, volume, time and status will appear in the LCD screen on the
SmartRF04EB.
• The controls are the following:
o Joystick up / down – next / previous song.
o Joystick left / right – fast forward / backwards.
o Push joystick – toggle play / pause.
o Push button “S1” – toggle play list shuffling.
o Turn pot-meter “Pot” – adjust volume
SWRU082 Page 14 of 24
CC2511 Dongle
7 USB development framework
A versatile, efficient and easy to use USB development framework is available for the
CC2511. The intension with this framework is to make USB development as quick and easy
as possible. The framework includes a firmware framework for the embedded software on the
CC2511, and a Windows USB driver framework.
In addition there is general example code and libraries available showing how to use the
CC2510 and CC2511 MCU, radio and other peripherals.
• Initialization of the USB peripheral unit, and response to reset-signaling on the bus.
• Automated response to almost all standard requests, based on data from the USB
descriptor set (the SYNCH_FRAME and SET_DESCRIPTOR requests must be
handled by the application).
• Automated setup of endpoint control registers, depending on the selected
configuration and interface alternate settings.
• All endpoint types are supported: Setup, bulk, interrupt and isochronous.
• A simple and efficient interface for responding to class and vendor requests. Both
automated and manual data transfer is supported.
• Endpoint access via a simple set of macros and functions.
• Support for suspend mode and remote wake-up.
• A function hook- and event-based interface allows for the framework to run from
main, the USB interrupt, or a combination of both.
The library is completely generic, flexible, efficient, and easy to use. However, it does require
brief knowledge of the USB specification, including the concepts of configurations, interfaces
and endpoints, different endpoint types, standard, vendor and class requests, and USB
descriptor sets.
SWRU082 Page 15 of 24
CC2511 Dongle
As shown in Figure 10 the USB library is divided into five modules:
The USB Framework (usbfw) contains all USB status information and functions for
initialization, device reset handling, and transfers on endpoint 0. It also contains basic macros
and functions for endpoint control and FIFO access. Vendor and class requests are passed
up to the application, and standard requests further down for internal processing.
The USB Standard Requests (usbsr) module contains automated processing functions for
almost all standard requests. The automated handling and endpoint configuration relies on
the USB descriptor set and two look-up tables. Requests that are not supported
(SYNCH_FRAME and SET_DESCRIPTOR) or that are class specific, are passed up to the
application. The application is also notified upon important events, such as change in
endpoint status or interface alternate settings.
The USB Descriptor Parser (usbdp) module provides a mechanism for locating standard-
formatted USB descriptors. The user must provide a USB descriptor set, and two simple
lookup tables - one for locating other descriptor formats, and another for setting up endpoint
double-buffering. The necessary constant and structure definitions, and guidelines for writing
compatible descriptor sets, are found in the USB Descriptor module.
The USB Suspend (usbsusp) module provides easy to use, fully automated support for USB
suspend, USB resume and USB remote wakeup functionality.
To implement USB suspend and USB resume the user only need to add a short piece of code
to the main loop.
USB remote wakeup is performed by a single function call.
The complete documentation of the CC2511 USB embedded firmware framework is available
in a compressed HTML file, cc2511_USB_library.chm found in
“CC2511DK\embedded_sw\Library\cc2511\CC2511UsbLibrary\doc”.
SWRU082 Page 16 of 24
CC2511 Dongle
The complete documentation of the CUDAL framework is available in a compressed HTML
file, “cudal.chm”, found in “CC2511DK\pc_sw\CUDAL\doc”
Texas Instruments have a license that allows its customers to do the following:
• Use the application examples included in the kit.
• Develop own applications using CUDAL (Chipcon USB Dongle Access Library) as
long as all development and testing is done on the hardware (CC2511 USB Dongle)
supplied in the development kit from Texas Instruments.
• Modify or add functionality in the CUDAL library.
The customer must purchase their own license if they wish to do any of the following:
• Develop or test software on hardware that was not supplied in the development kit.
• Go into production with a product that uses the driver.
The most important is the HAL library which contains functions and macros to enable and use
all peripheral units on the CC2510 and CC2511. There is also an EB library containing
functions and macros to use the peripheral units found on the SmarRF04EB development
card. These libraries are all documented in the HAL_CUL_EB_Software_User_Manual.pdf.
Examples on how to use these libraries are found in the CC2510 application examples. These
application examples are documented in CC2430DK_CC2510_CC1110_User_Manual.pdf.
The software is found in “CC2510DK\App_Ex\cc2510”
The CC2511 application examples use a library called CC2511AppExLibrary. This library
contains the following modules:
• RF module, a simple RF protocol used in the CC2511 application examples
• Timer4 manager module, use timer4 to call functions at regular intervals.
• Buffer module, implementation of a FIFO (First In, First Out) buffer.
This library is documented in a compressed HTML file, “CC2511AppExLibrary.chm”.
The CC2511AppExLibrary is divided into two parts, one for the CC2510 EM and one for the
CC2511 USB Dongle.
The CC2511AppExLibrary and documentation is found here:
• CC2510 : “CC2511DK\embedded_sw\Library\cc2510\CC2511AppExLibrary”
• CC2511 : “CC2511DK\embedded_sw\Library\cc2511\CC2511AppExLibrary”
SWRU082 Page 17 of 24
CC2511 Dongle
8 CC2511 Dongle hardware description
CC2511
PCB LED
antenna
Button
Line marking
cutaway section USB
of the dongle connector
Debug GPIO
connector testpins
Alternative
debug
connector
SWRU082 Page 18 of 24
CC2511 Dongle
8.3 Debug connector
The CC2511 Dongle has debug connector (P3) that is compatible with the SoC debug
connector on the SmartRF04EB. This enables the CC2511 Dongle to be programmed and
debugged via the SmartRF04EB. The debug connector and the test pins on the CC2511
Dongle can be removed to reduce its size. If that is done, programming and debugging can
still be done using the connector on the back of the CC2511 Dongle (P5). The pin-out of the
debug connector (P3) is given in Table 2.
Pin Function
1 GND
2 VDD
3 P2_2 / debug clock
4 P2_1 / debug data
5 P1_4
6 P1_5
7 RESET_N
8 P1_6
9 Not connected (VDD by mounting R6, 0 Ohm)
10 P1_7
Table 2 Debug connector (P3) pin-out
Pin Function
1 P2_0
2 GND
3 P0_5
4 P0_4
5 P0_3
6 P0_2
7 P0_1
8 P0_0
9 VDD
10 P1_3
Table 3: Test pins (P4) pin-out
SWRU082 Page 19 of 24
CC2511 Dongle
9 CC2511 Dongle schematics
SWRU082 Page 20 of 24
CC2511 Dongle
SWRU082 Page 21 of 24
CC2511 Dongle
SWRU082 Page 22 of 24
CC2511 Dongle
SWRU082 Page 23 of 24
CC2511 Dongle
10 Document history
Revision Date Description/Changes
1.0 2006-07-06 Initial release
SWRU082 Page 24 of 24