1ba4c17ee1d31e1b9f396292711f1414d449dd361Evan Chu## this file is used by Broadcom's Hardware Abstraction Layer at external/libnfc-nci/halimpl/ 2eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu 3eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu############################################################################### 4eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# Application options 5ba4c17ee1d31e1b9f396292711f1414d449dd361Evan ChuAPPL_TRACE_LEVEL=0xFF 6ba4c17ee1d31e1b9f396292711f1414d449dd361Evan ChuPROTOCOL_TRACE_LEVEL=0xFFFFFFFF 7eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu 8eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu############################################################################### 9eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# performance measurement 10eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# Change this setting to control how often USERIAL log the performance (throughput) 11eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# data on read/write/poll 12eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# defailt is to log performance dara for every 100 read or write 13eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu#REPORT_PERFORMANCE_MEASURE=100 14eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu 15eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu############################################################################### 16eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# File used for NFA storage 17eb190654c5fbaea2f396bb5523f57062f291879aEvan ChuNFA_STORAGE="/data/nfc" 18eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu 19eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu############################################################################### 20eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# Snooze Mode Settings 21eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# 22eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# By default snooze mode is enabled. Set SNOOZE_MODE_CFG byte[0] to 0 23eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# to disable. 24eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# 25eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# If SNOOZE_MODE_CFG is not provided, the default settings are used: 26eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# They are as follows: 27eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# 8 Sleep Mode (0=Disabled 1=UART 8=SPI/I2C) 28eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# 0 Idle Threshold Host 29eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# 0 Idle Threshold HC 30eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# 0 NFC Wake active mode (0=ActiveLow 1=ActiveHigh) 31eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# 1 Host Wake active mode (0=ActiveLow 1=ActiveHigh) 32eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# 33eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu#SNOOZE_MODE_CFG={08:00:00:00:01} 34eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu 35eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu############################################################################### 36eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# Insert a delay in milliseconds after NFC_WAKE and before write to NFCC 37eb190654c5fbaea2f396bb5523f57062f291879aEvan ChuNFC_WAKE_DELAY=20 38ba4c17ee1d31e1b9f396292711f1414d449dd361Evan Chu 39eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu############################################################################### 40eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# Various Delay settings (in ms) used in USERIAL 41eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# POWER_ON_DELAY 42eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# Delay after turning on chip, before writing to transport (default 300) 43eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# PRE_POWER_OFF_DELAY 4430423b8fe42b7efeaf0e0eae2c0f4f758e98c0abEvan Chu# Delay after deasserting NFC-Wake before turn off chip (default 0) 45eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# POST_POWER_OFF_DELAY 46eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# Delay after turning off chip, before USERIAL_close returns (default 0) 47eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# 48eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu#POWER_ON_DELAY=300 4930423b8fe42b7efeaf0e0eae2c0f4f758e98c0abEvan Chu#PRE_POWER_OFF_DELAY=0 50eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu#POST_POWER_OFF_DELAY=0 51eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu 52eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu############################################################################### 5330423b8fe42b7efeaf0e0eae2c0f4f758e98c0abEvan Chu# LPTD mode configuration 5430423b8fe42b7efeaf0e0eae2c0f4f758e98c0abEvan Chu# byte[0] is the length of the remaining bytes in this value 55eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# if set to 0, LPTD params will NOT be sent to NFCC (i.e. disabled). 5630423b8fe42b7efeaf0e0eae2c0f4f758e98c0abEvan Chu# byte[1] is the param id it should be set to B9. 5730423b8fe42b7efeaf0e0eae2c0f4f758e98c0abEvan Chu# byte[2] is the length of the LPTD parameters 58ba4c17ee1d31e1b9f396292711f1414d449dd361Evan Chu# byte[3] indicates if LPTD is enabled 5930423b8fe42b7efeaf0e0eae2c0f4f758e98c0abEvan Chu# if set to 0, LPTD will be disabled (parameters will still be sent). 60ba4c17ee1d31e1b9f396292711f1414d449dd361Evan Chu# byte[4-n] are the LPTD parameters. 61eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# By default, LPTD is enabled and default settings are used. 6230423b8fe42b7efeaf0e0eae2c0f4f758e98c0abEvan Chu# See nfc_hal_dm_cfg.c for defaults 6330423b8fe42b7efeaf0e0eae2c0f4f758e98c0abEvan ChuLPTD_CFG={23:B9:21:01:02:FF:FF:04:A0:0F:40:00:80:02:02:10:00:00:00:31:0C:30:00:00:00:00:00:00:00:00:00:00:00:00:00:00} 64eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu 65eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu############################################################################### 66eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# Startup Configuration (100 bytes maximum) 67eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# 68eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# For the 0xCA parameter, byte[9] (marked by 'AA') is for UICC0, and byte[10] (marked by BB) is 69eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# for UICC1. The values are defined as: 70eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# 0 : UICCx only supports ISO_DEP in low power mode. 71eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# 2 : UICCx only supports Mifare in low power mode. 72eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# 3 : UICCx supports both ISO_DEP and Mifare in low power mode. 73eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# 74eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# AA BB 7530423b8fe42b7efeaf0e0eae2c0f4f758e98c0abEvan ChuNFA_DM_START_UP_CFG={1F:CB:01:01:A5:01:01:CA:14:00:00:00:00:06:E8:03:00:00:00:00:00:00:00:00:00:00:00:00:00:28:01:01} 76eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu 77eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu############################################################################### 78ba4c17ee1d31e1b9f396292711f1414d449dd361Evan Chu# Startup Vendor Specific Configuration (100 bytes maximum); 79ba4c17ee1d31e1b9f396292711f1414d449dd361Evan Chu# byte[0] TLV total len = 0x5 80ba4c17ee1d31e1b9f396292711f1414d449dd361Evan Chu# byte[1] NCI_MTS_CMD|NCI_GID_PROP = 0x2f 81ba4c17ee1d31e1b9f396292711f1414d449dd361Evan Chu# byte[2] NCI_MSG_FRAME_LOG = 0x9 82ba4c17ee1d31e1b9f396292711f1414d449dd361Evan Chu# byte[3] 2 83ba4c17ee1d31e1b9f396292711f1414d449dd361Evan Chu# byte[4] 0=turn off RF frame logging; 1=turn on 84ba4c17ee1d31e1b9f396292711f1414d449dd361Evan Chu# byte[5] 0=turn off SWP frame logging; 1=turn on 85ba4c17ee1d31e1b9f396292711f1414d449dd361Evan Chu# NFA_DM_START_UP_VSC_CFG={05:2F:09:02:01:01} 86eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu 87eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu############################################################################### 88ba4c17ee1d31e1b9f396292711f1414d449dd361Evan Chu# Configure crystal frequency when internal LPO can't detect the frequency. 89ba4c17ee1d31e1b9f396292711f1414d449dd361Evan Chu#XTAL_FREQUENCY=0 90eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu 91eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu############################################################################### 92eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# Firmware patch file 93eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# If the value is not set then patch download is disabled. 94eb190654c5fbaea2f396bb5523f57062f291879aEvan ChuFW_PATCH="/vendor/firmware/bcm2079x_firmware.ncd" 95eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu 96eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu############################################################################### 97eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# Firmware pre-patch file (sent before the above patch file) 98eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# If the value is not set then pre-patch is not used. 99eb190654c5fbaea2f396bb5523f57062f291879aEvan ChuFW_PRE_PATCH="/vendor/firmware/bcm2079x_pre_firmware.ncd" 100eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu 101eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu############################################################################### 102eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# Firmware patch format 103eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# 1 = HCD 104eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# 2 = NCD (default) 105eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu#NFA_CONFIG_FORMAT=2 106eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu 107eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu############################################################################### 10830423b8fe42b7efeaf0e0eae2c0f4f758e98c0abEvan Chu# SPD Debug mode 10930423b8fe42b7efeaf0e0eae2c0f4f758e98c0abEvan Chu# If set to 1, any failure of downloading a patch will trigger a hard-stop 11030423b8fe42b7efeaf0e0eae2c0f4f758e98c0abEvan Chu#SPD_DEBUG=0 11130423b8fe42b7efeaf0e0eae2c0f4f758e98c0abEvan Chu 11230423b8fe42b7efeaf0e0eae2c0f4f758e98c0abEvan Chu############################################################################### 11330423b8fe42b7efeaf0e0eae2c0f4f758e98c0abEvan Chu# SPD Max Retry Count 11430423b8fe42b7efeaf0e0eae2c0f4f758e98c0abEvan Chu# The number of attempts to download a patch before giving up (defualt is 3). 11530423b8fe42b7efeaf0e0eae2c0f4f758e98c0abEvan Chu# Note, this resets after a power-cycle. 11630423b8fe42b7efeaf0e0eae2c0f4f758e98c0abEvan Chu#SPD_MAX_RETRY_COUNT=3 11730423b8fe42b7efeaf0e0eae2c0f4f758e98c0abEvan Chu 11830423b8fe42b7efeaf0e0eae2c0f4f758e98c0abEvan Chu############################################################################### 119eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# transport driver 120eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# 121eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# TRANSPORT_DRIVER=<driver> 122eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# 123eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# where <driver> can be, for example: 124eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# "/dev/ttyS" (UART) 125eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# "/dev/bcmi2cnfc" (I2C) 126eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# "hwtun" (HW Tunnel) 127eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# "/dev/bcmspinfc" (SPI) 128eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# "/dev/btusb0" (BT USB) 129eb190654c5fbaea2f396bb5523f57062f291879aEvan ChuTRANSPORT_DRIVER="/dev/bcm2079x" 130eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu 131eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu############################################################################### 132eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# power control driver 133eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# Specify a kernel driver that support ioctl commands to control NFC_EN and 134eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# NFC_WAKE gpio signals. 135eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# 136eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# POWER_CONTRL_DRIVER=<driver> 137eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# where <driver> can be, for example: 138eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# "/dev/nfcpower" 139eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# "/dev/bcmi2cnfc" (I2C) 140eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# "/dev/bcmspinfc" (SPI) 141eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# i2c and spi driver may be used to control NFC_EN and NFC_WAKE signal 142eb190654c5fbaea2f396bb5523f57062f291879aEvan ChuPOWER_CONTROL_DRIVER="/dev/bcm2079x" 143eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu 144eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu############################################################################### 145eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# I2C transport driver options 146eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# 147eb190654c5fbaea2f396bb5523f57062f291879aEvan ChuBCMI2CNFC_ADDRESS=0 148eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu 149eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu############################################################################### 150eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# I2C transport driver try to read multiple packets in read() if data is available 151eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# remove the comment below to enable this feature 152eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu#READ_MULTIPLE_PACKETS=1 153eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu 154eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu############################################################################### 155eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# SPI transport driver options 156ba4c17ee1d31e1b9f396292711f1414d449dd361Evan Chu#SPI_NEGOTIATION={0A:F0:00:01:00:00:00:FF:FF:00:00} 157eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu 158eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu############################################################################### 159eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# UART transport driver options 160eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# 161eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# PORT=1,2,3,... 162eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# BAUD=115200, 19200, 9600, 4800, 163eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# DATABITS=8, 7, 6, 5 164eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# PARITY="even" | "odd" | "none" 165eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# STOPBITS="0" | "1" | "1.5" | "2" 166eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu 167eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu#UART_PORT=2 168eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu#UART_BAUD=115200 169eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu#UART_DATABITS=8 170eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu#UART_PARITY="none" 171eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu#UART_STOPBITS="1" 172eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu 173eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu############################################################################### 174eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# Insert a delay in microseconds per byte after a write to NFCC. 175eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# after writing a block of data to the NFCC, delay this an amopunt of time before 176eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# writing next block of data. the delay is calculated as below 177eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# NFC_WRITE_DELAY * (number of byte written) / 1000 milliseconds 178eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu# e.g. after 259 bytes is written, delay (259 * 20 / 1000) 5 ms before next write 179eb190654c5fbaea2f396bb5523f57062f291879aEvan ChuNFC_WRITE_DELAY=20 180eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu 18130423b8fe42b7efeaf0e0eae2c0f4f758e98c0abEvan Chu############################################################################### 18230423b8fe42b7efeaf0e0eae2c0f4f758e98c0abEvan Chu# Maximum Number of Credits to be allowed by the NFCC 18330423b8fe42b7efeaf0e0eae2c0f4f758e98c0abEvan Chu# This value overrides what the NFCC specifices allowing the host to have 18430423b8fe42b7efeaf0e0eae2c0f4f758e98c0abEvan Chu# the control to work-around transport limitations. If this value does 18530423b8fe42b7efeaf0e0eae2c0f4f758e98c0abEvan Chu# not exist or is set to 0, the NFCC will provide the number of credits. 18630423b8fe42b7efeaf0e0eae2c0f4f758e98c0abEvan ChuMAX_RF_DATA_CREDITS=1 18730423b8fe42b7efeaf0e0eae2c0f4f758e98c0abEvan Chu 18830423b8fe42b7efeaf0e0eae2c0f4f758e98c0abEvan Chu############################################################################### 18930423b8fe42b7efeaf0e0eae2c0f4f758e98c0abEvan Chu# Allow UICC to be powered off if there is no traffic. 19030423b8fe42b7efeaf0e0eae2c0f4f758e98c0abEvan Chu# Timeout is in ms. If set to 0, then UICC will not be powered off. 19130423b8fe42b7efeaf0e0eae2c0f4f758e98c0abEvan ChuUICC_IDLE_TIMEOUT=30000 19230423b8fe42b7efeaf0e0eae2c0f4f758e98c0abEvan Chu 19330423b8fe42b7efeaf0e0eae2c0f4f758e98c0abEvan Chu 19430423b8fe42b7efeaf0e0eae2c0f4f758e98c0abEvan Chu############################################################################### 19530423b8fe42b7efeaf0e0eae2c0f4f758e98c0abEvan Chu# Antenna Configuration - This data is used when setting 0xC8 config item 19630423b8fe42b7efeaf0e0eae2c0f4f758e98c0abEvan Chu# at startup (before discovery is started). If not used, no value is sent. 19730423b8fe42b7efeaf0e0eae2c0f4f758e98c0abEvan Chu# 19830423b8fe42b7efeaf0e0eae2c0f4f758e98c0abEvan Chu# The settings for this value are documented here: 19930423b8fe42b7efeaf0e0eae2c0f4f758e98c0abEvan Chu# http://wcgbu.broadcom.com/wpan/PM/Project%20Document%20Library/bcm20791B0/ 20030423b8fe42b7efeaf0e0eae2c0f4f758e98c0abEvan Chu# Design/Doc/PHY%20register%20settings/BCM20791-B2-1027-02_PHY_Recommended_Reg_Settings.xlsx 20130423b8fe42b7efeaf0e0eae2c0f4f758e98c0abEvan Chu# This document is maintained by Paul Forshaw. 20230423b8fe42b7efeaf0e0eae2c0f4f758e98c0abEvan Chu# 20330423b8fe42b7efeaf0e0eae2c0f4f758e98c0abEvan Chu# The values marked as ?? should be tweaked per antenna or customer/app: 20430423b8fe42b7efeaf0e0eae2c0f4f758e98c0abEvan Chu# {20:C8:1E:06:??:00:??:??:??:00:??:24:00:1C:00:75:00:77:00:76:00:1C:00:03:00:0A:00:??:01:00:00:40:04} 20530423b8fe42b7efeaf0e0eae2c0f4f758e98c0abEvan Chu# array[0] = 0x20 is length of the payload from array[1] to the end 20630423b8fe42b7efeaf0e0eae2c0f4f758e98c0abEvan Chu# array[1] = 0xC8 is PREINIT_DSP_CFG 20730423b8fe42b7efeaf0e0eae2c0f4f758e98c0abEvan Chu#PREINIT_DSP_CFG={20:C8:1E:06:1F:00:0F:03:3C:00:04:24:00:1C:00:75:00:77:00:76:00:1C:00:03:00:0A:00:48:01:00:00:40:04} 20830423b8fe42b7efeaf0e0eae2c0f4f758e98c0abEvan Chu 209