EMlyDinEsH Posted December 27, 2013 Author Share Posted December 27, 2013 Hi, just a little help for me. I have the Azureware BCM94352HMB and in system report on USB i have this : Broadcom USB Bluetooth 4.0 Controller: Product ID: 0x3404 Vendor ID: 0x13d3 (AzureWave Technologies, Inc.) Version: 1.12 Serial Number: 240A649F6C7B Speed: Up to 12 Mb/sec Manufacturer: Broadcom Corp Location ID: 0x14b00000 / 6 Current Available (mA): 500 Current Required (mA): 0 the wifi rocks fine with the "toledaARPT.kext" but bluetooth doesn't work, so i've downloaded from here the "BTFirmwareUploader.kext" and edited in this mode : <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>BuildMachineOSBuild</key> <string>12F37</string> <key>CFBundleDevelopmentRegion</key> <string>it_IT</string> <key>CFBundleExecutable</key> <string>BTFirmwareUploader</string> <key>CFBundleIdentifier</key> <string>com.apple.BTFirmwareUploader</string> <key>CFBundleInfoDictionaryVersion</key> <string>6.0</string> <key>CFBundleName</key> <string>BTFirmwareUploader</string> <key>CFBundlePackageType</key> <string>KEXT</string> <key>CFBundleShortVersionString</key> <string>1.5</string> <key>CFBundleSignature</key> <string>????</string> <key>CFBundleVersion</key> <string>1.5</string> <key>DTCompiler</key> <string>com.apple.compilers.llvmgcc42</string> <key>DTPlatformBuild</key> <string>4H1503</string> <key>DTPlatformVersion</key> <string>GM</string> <key>DTSDKBuild</key> <string>11E52</string> <key>DTSDKName</key> <string>macosx10.7</string> <key>DTXcode</key> <string>0463</string> <key>DTXcodeBuild</key> <string>4H1503</string> <key>IOKitPersonalities</key> <dict> <key>AzureWave-3404-13d3</key> <dict> <key>CFBundleIdentifier</key> <string>com.apple.BTFirmwareUploader</string> <key>IOClass</key> <string>BTFirmwareUploader</string> <key>IOProviderClass</key> <string>IOUSBDevice</string> <key>Use BCM Firmware</key> <true/> <key>idProduct</key> <integer>13316</integer> <key>idVendor</key> <integer>5075</integer> </dict> <key>InfoChange - AzureWave</key> <dict> <key>CFBundleIdentifier</key> <string>com.apple.driver.AppleUSBMergeNub</string> <key>IOClass</key> <string>AppleUSBMergeNub</string> <key>IOProviderClass</key> <string>IOUSBDevice</string> <key>IOProviderMergeProperties</key> <dict> <key>USB Product Name</key> <string>Broadcom USB Bluetooth 4.0 Controller</string> <key>idProduct</key> <integer>13316</integer> <key>idVendor</key> <integer>5075</integer> </dict> <key>idProduct</key> <integer>13316</integer> <key>idVendor</key> <integer>5075</integer> </dict> </dict> <key>NSHumanReadableCopyright</key> <string>Copyright © 2012-2013 EMlyDinEsH(OSXLatitude). All rights reserved.</string> <key>OSBundleLibraries</key> <dict> <key>com.apple.iokit.IOUSBFamily</key> <string>4.5.8</string> <key>com.apple.kpi.iokit</key> <string>11.3.0</string> <key>com.apple.kpi.libkern</key> <string>11.3.0</string> </dict> <key>OSBundleRequired</key> <string>Root</string> </dict> </plist> I have installed it with kext wizard but bluetooth doesn't go.. still remaining into "Wait for a Bluetooth trackpad - No trackpad found" So, where is my mistake? You don't need to edit anything here in my kext. You need to inject your ids to Apple Bluetooth kext. You can find details on kext patch here: https://osxlatitude.com/index.php?/topic/1916-the-perfect-mini-pcie-wifi-and-bluetooth-combo-card-for-notebooks/ Link to comment Share on other sites More sharing options...
bajito93 Posted December 27, 2013 Share Posted December 27, 2013 I have AR5B195 and use it on os x mavericks. I install this kext, and when i restart the system, bluetooth works, but now bluetooth not disable, i need unplug the bluetooth when i use my zenbook with battery. Bluetooh works, but you can't unplug it. Link to comment Share on other sites More sharing options...
fatez Posted December 27, 2013 Share Posted December 27, 2013 No lucky for me with 2.0beta2 : Bluetooth Firmware Uploader v2.0beta2 by EMlyDinEsH(OSXLatitude) (c) 2012-2013, CREDITS: mac4mat(tonycrapx) and laloch(archlinux) Bluetooth Firmware Uploader:: Broadcom Bluetooth hardware found Bluetooth Firmware Uploader:: Using fimrware v5452 Bluetooth Firmware Uploader:: Beginning firmware upload...... Bluetooth Firmware Uploader:: Firmware v5452, buff size 69358 IO80211Controller::dataLinkLayerAttachComplete(): adding AppleEFINVRAM notification IO80211Interface::efiNVRAMPublished(): Previous Shutdown Cause: 5 TURN ON BLUETOOTH : Dec 27 17:37:50 Mac kernel[0]: **** [IOBluetoothHostControllerUSBTransport][SuspendDevice] -- Resume -- suspendDeviceCallResult = 0x0000 (kIOReturnSuccess) -- 0x5000 **** Dec 27 17:37:50 Mac.local blued[447]: hostControllerOnline - Number of Paired devices = 1, List of Paired devices = ( "d8-a2-5e-f9-ef-b0" ) Dec 27 17:37:55 Mac.local System Preferences[287]: Failed to create connection to the daemon: connection timeout: did not receive reply PAIRING DEVICE : Dec 27 17:38:36 Mac kernel[0]: [BNBTrackpadDevice::init][80.14] init is complete Dec 27 17:38:36 Mac kernel[0]: [BNBTrackpadDevice::handleStart][80.14] returning 1 Dec 27 17:38:36 Mac kernel[0]: [AppleMultitouchHIDEventDriver::start] entered Dec 27 17:38:36 Mac.local loginwindow[90]: Preferred Localizations total: 1 contents ( Italian ) Dec 27 17:38:36 Mac.local System Preferences[287]: An instance 0x6000002080b0 of class AVPlayer was deallocated while key value observers were still registered with it. Observation info was leaked, and may even become mistakenly attached to some other object. Set a breakpoint on NSKVODeallocateBreak to stop here in the debugger. Here's the current observation info: <NSKeyValueObservationInfo 0x60800005a1c0> ( <NSKeyValueObservance 0x6080002cd7b0: Observer: 0x6080002e4880, Key path: status, Options: <New: NO, Old: NO, Prior: NO> Context: 0x1119d60e8, Property: 0x60000025f6e0> ) Dec 27 17:38:36 Mac.local System Preferences[287]: An instance 0x600000205410 of class AVPlayer was deallocated while key value observers were still registered with it. Observation info was leaked, and may even become mistakenly attached to some other object. Set a breakpoint on NSKVODeallocateBreak to stop here in the debugger. Here's the current observation info: <NSKeyValueObservationInfo 0x6000004421f0> ( <NSKeyValueObservance 0x6000002c3250: Observer: 0x6000002e4b00, Key path: status, Options: <New: NO, Old: NO, Prior: NO> Context: 0x1119d60e8, Property: 0x60000025f6e0> ) Dec 27 17:38:36 Mac.local System Preferences[287]: An instance 0x60000020ad50 of class AVPlayer was deallocated while key value observers were still registered with it. Observation info was leaked, and may even become mistakenly attached to some other object. Set a breakpoint on NSKVODeallocateBreak to stop here in the debugger. Here's the current observation info: <NSKeyValueObservationInfo 0x600000446cf0> ( <NSKeyValueObservance 0x6000002ca170: Observer: 0x6000000fa600, Key path: status, Options: <New: NO, Old: NO, Prior: NO> Context: 0x1119d60e8, Property: 0x60000025f6e0> ) Dec 27 17:38:41 Mac kernel[0]: [BNBDevice::staticKickStartTimerFired] Timer fired Dec 27 17:38:41 Mac kernel[0]: [BNBDevice::staticKickStartTimerFired] ========= Forcing MT restart ========= I've noted that my chipset is different : Broadcom Chipset: 20702A3 ID vendor: 0x13D3 ID product: 0x3404 Strange : the apple keyboard wireless works well, but the apple trackpad no ... Apple keyboard: Dec 27 17:49:30 Mac kernel[0]: **** [IOBluetoothHostControllerUSBTransport][SuspendDevice] -- Resume -- suspendDeviceCallResult = 0x0000 (kIOReturnSuccess) -- 0x8800 **** Dec 27 17:49:30 Mac.local blued[102]: hostControllerOnline - Number of Paired devices = 0, List of Paired devices = ( ) Dec 27 17:49:48 Mac.local blued[102]: Save link key for device: 28-cf-e9-6d-5e-8c Dec 27 17:49:51 Mac.local loginwindow[87]: Preferred Localizations total: 1 contents ( it ) Dec 27 17:50:06 Mac.local mds[84]: (Warning) Volume: vsd:0x7fb5b4002400 Open failed. failureCount:4 { DisabledRecycleCount = 4; } Dec 27 17:50:17 Mac.local CleanMyDrive[268]: Disk description changed (null) Dec 27 17:50:17 Mac.local CleanMyDrive[268]: Skipped because nobrowse Dec 27 17:50:17 Mac.local mds[84]: (Normal) Volume: volume:0x7fb5b4803000 ********** Bootstrapped Creating a default store:0 SpotLoc:(null) SpotVerLoc:(null) occlude:0 /Volumes/firmwaresyncd.YQC995 Trackpad Dec 27 17:51:29 Mac.local blued[102]: Save link key for device: d8-a2-5e-f9-ef-b0 Dec 27 17:51:30 Mac kernel[0]: considerRebuildOfPrelinkedKernel prebuild rebuild has expired Dec 27 17:51:30 Mac kernel[0]: [BNBTrackpadDevice::init][80.14] init is complete Dec 27 17:51:30 Mac kernel[0]: [BNBTrackpadDevice::handleStart][80.14] returning 1 Dec 27 17:51:30 Mac kernel[0]: [AppleMultitouchHIDEventDriver::start] entered Dec 27 17:51:30 Mac.local loginwindow[87]: Preferred Localizations total: 1 contents ( Italian ) Dec 27 17:51:34 Mac kernel[0]: [BNBTrackpadDevice][waitForData][d8-a2-5e-f9-ef-b0] Timeout waiting for data Dec 27 17:51:34 Mac kernel[0]: [BNBTrackpadDevice::getExtendedReport][80.14] ERROR: [BNBTrackpadDevice] getReport returned error e00002d6 for reportID 0x0047 Dec 27 17:51:34 Mac kernel[0]: [BNBTrackpadDevice][updateBatteryLevel] Couldn't get battery percentage from device Dec 27 17:51:34 Mac kernel[0]: [BNBTrackpadDevice][sendData][d8-a2-5e-f9-ef-b0] commandSleep in sendData returned an error Dec 27 17:51:35 Mac kernel[0]: [BNBDevice::staticKickStartTimerFired] Timer fired Dec 27 17:51:35 Mac kernel[0]: [BNBDevice::staticKickStartTimerFired] ========= Forcing MT restart ========= Dec 27 17:51:36 Mac kernel[0]: [BNBTrackpadDevice][sendData][d8-a2-5e-f9-ef-b0] commandSleep in sendData returned an error Dec 27 17:51:36 Mac kernel[0]: [BNBTrackpadDevice][sendData][d8-a2-5e-f9-ef-b0] Became inactive while sending data Dec 27 17:51:36 Mac kernel[0]: [BNBTrackpadDevice][setReportWL][d8-a2-5e-f9-ef-b0] Could not send DATA command via interrupt channel - 0xE00002D7 Dec 27 17:51:36 Mac kernel[0]: [BNBTrackpadDevice::_resetMultitouchDevice][80.14] ERROR: _simpleSetReport returned error 0xe00002c0 Dec 27 17:51:36 Mac kernel[0]: [BNBTrackpadDevice][waitForData][d8-a2-5e-f9-ef-b0] Became inactive waiting for data Dec 27 17:51:36 Mac kernel[0]: [BNBTrackpadDevice::getExtendedReport][80.14] ERROR: [BNBTrackpadDevice] getReport returned error e00002d7 for reportID 0x0047 Dec 27 17:51:36 Mac kernel[0]: [BNBTrackpadDevice][updateBatteryLevel] Couldn't get battery percentage from device Dec 27 17:51:36 Mac.local System Preferences[157]: An instance 0x60000001ae90 of class AVPlayer was deallocated while key value observers were still registered with it. Observation info was leaked, and may even become mistakenly attached to some other object. Set a breakpoint on NSKVODeallocateBreak to stop here in the debugger. Here's the current observation info: <NSKeyValueObservationInfo 0x608000452d80> ( <NSKeyValueObservance 0x6080002d4f20: Observer: 0x6080002f4c80, Key path: status, Options: <New: NO, Old: NO, Prior: NO> Context: 0x10e60f0e8, Property: 0x600000244950> ) Dec 27 17:51:36 Mac.local System Preferences[157]: An instance 0x600000206170 of class AVPlayer was deallocated while key value observers were still registered with it. Observation info was leaked, and may even become mistakenly attached to some other object. Set a breakpoint on NSKVODeallocateBreak to stop here in the debugger. Here's the current observation info: <NSKeyValueObservationInfo 0x60000005e0f0> ( <NSKeyValueObservance 0x6000002cca90: Observer: 0x6080002f4d00, Key path: status, Options: <New: NO, Old: NO, Prior: NO> Context: 0x10e60f0e8, Property: 0x600000244950> ) Dec 27 17:51:36 Mac.local System Preferences[157]: An instance 0x608000204840 of class AVPlayer was deallocated while key value observers were still registered with it. Observation info was leaked, and may even become mistakenly attached to some other object. Set a breakpoint on NSKVODeallocateBreak to stop here in the debugger. Here's the current observation info: <NSKeyValueObservationInfo 0x60000005f110> ( <NSKeyValueObservance 0x6000002ce3f0: Observer: 0x6080002f4f00, Key path: status, Options: <New: NO, Old: NO, Prior: NO> Context: 0x10e60f0e8, Property: 0x600000244950> ) Dec 27 17:51:36 Mac.local System Preferences[157]: An instance 0x608000207840 of class AVPlayer was deallocated while key value observers were still registered with it. Observation info was leaked, and may even become mistakenly attached to some other object. Set a breakpoint on NSKVODeallocateBreak to stop here in the debugger. Here's the current observation info: <NSKeyValueObservationInfo 0x608000452d80> ( <NSKeyValueObservance 0x6080002d4f20: Observer: 0x6080002f4c80, Key path: status, Options: <New: NO, Old: NO, Prior: NO> Context: 0x10e60f0e8, Property: 0x600000244950> ) Dec 27 17:51:36 Mac.local System Preferences[157]: An instance 0x6080002087b0 of class AVPlayer was deallocated while key value observers were still registered with it. Observation info was leaked, and may even become mistakenly attached to some other object. Set a breakpoint on NSKVODeallocateBreak to stop here in the debugger. Here's the current observation info: <NSKeyValueObservationInfo 0x60000005e0f0> ( <NSKeyValueObservance 0x6000002cca90: Observer: 0x6080002f4d00, Key path: status, Options: <New: NO, Old: NO, Prior: NO> Context: 0x10e60f0e8, Property: 0x600000244950> ) Dec 27 17:51:36 Mac.local System Preferences[157]: An instance 0x6080002081a0 of class AVPlayer was deallocated while key value observers were still registered with it. Observation info was leaked, and may even become mistakenly attached to some other object. Set a breakpoint on NSKVODeallocateBreak to stop here in the debugger. Here's the current observation info: <NSKeyValueObservationInfo 0x60000005f110> ( <NSKeyValueObservance 0x6000002ce3f0: Observer: 0x6080002f4f00, Key path: status, Options: <New: NO, Old: NO, Prior: NO> Context: 0x10e60f0e8, Property: 0x600000244950> ) Dec 27 17:51:38 Mac kernel[0]: [BNBTrackpadDevice] notice: _outstandingIO > 0 but isInactive() returned TRUE... Dec 27 17:51:38 Mac.local loginwindow[87]: Preferred Localizations total: 1 contents ( Italian Link to comment Share on other sites More sharing options...
fatez Posted December 27, 2013 Share Posted December 27, 2013 So, i tried to switch Firmware "0" in plist and now works all! Thank YOU!!! EDIT : Now tried the firmware in mode 2 and works well... i haved the low battery in trackpad ahhahaahha i'm so lamah !!! THANK YOU THANK YOU!!!! Link to comment Share on other sites More sharing options...
jompha Posted January 2, 2014 Share Posted January 2, 2014 just tried and worked perfectly (AR9285 Combo). One step closer to perfect hackintosh. Thanks a million. Link to comment Share on other sites More sharing options...
giofrida Posted January 5, 2014 Share Posted January 5, 2014 This kext works well on my motherboard (ASUS P8Z68 DELUXE/GEN3) with ASUS AR3011. It's faster than the firmware uploader (ath3k-firmware-uploader-V2, from tonycrap community). Tried version: v2beta. The firmware used is the default one: Windows: 2, Linux: false. Anyway, I found this lines in my boot sequence: Jan 5 12:47:59 localhost kernel[0]: Bluetooth Firmware Uploader v2.0beta2 by EMlyDinEsH(OSXLatitude) (c) 2012-2013, CREDITS: mac4mat(tonycrapx) and laloch(archlinux) Jan 5 12:47:59 localhost kernel[0]: Bluetooth Firmware Uploader:: Atheros Bluetooth hardware found Jan 5 12:47:59 localhost kernel[0]: Bluetooth Firmware Uploader:: AR3011 Bluetooth detected Jan 5 12:47:59 localhost kernel[0]: Bluetooth Firmware Uploader:: Firmware not available in RAM, beginning upload Jan 5 12:47:59 localhost kernel[0]: ath_get_caps[4044] rx chainmask mismatch actual 7 sc_chainmak 0 Jan 5 12:47:59 localhost kernel[0]: 1.012983: ath_get_caps[4019] tx chainmask mismatch actual 7 sc_chainmak 0 Jan 5 12:47:59 localhost kernel[0]: 1.016600: Atheros: mac 448.3 phy 2195.2 radio 0.0 Jan 5 12:47:59 localhost kernel[0]: 1.016608: Use hw queue 0 for WME_AC_BE traffic Jan 5 12:47:59 localhost kernel[0]: 1.016613: Use hw queue 1 for WME_AC_BK traffic Jan 5 12:47:59 localhost kernel[0]: 1.016619: Use hw queue 2 for WME_AC_VI traffic Jan 5 12:47:59 localhost kernel[0]: 1.016624: Use hw queue 3 for WME_AC_VO traffic Jan 5 12:47:59 localhost kernel[0]: 1.016629: Use hw queue 8 for CAB traffic Jan 5 12:47:59 localhost kernel[0]: 1.016634: Use hw queue 9 for beacons Jan 5 12:47:59 localhost kernel[0]: 1.016692: wlan_vap_create : enter. devhandle=0xd1ced6b0, opmode=IEEE80211_M_STA, flags=0x1 Jan 5 12:47:59 localhost kernel[0]: 1.016724: wlan_vap_create : exit. devhandle=0xd1ced6b0, opmode=IEEE80211_M_STA, flags=0x1. Jan 5 12:47:59 localhost kernel[0]: 1.016753: ATH tunables: Jan 5 12:47:59 localhost kernel[0]: 1.016756: pullmode[1] txringsize[ 256] txsendqsize[1024] reapmin[ 32] reapcount[ 128] Jan 5 12:47:59 localhost kernel[0]: BTFirmwareUploader(0xffffff80124a0000):: unable to get device status Jan 5 12:47:59 localhost kernel[0]: Bluetooth Firmware Uploader:: Firmware uploaded to RAM Successfully Jan 5 12:47:59 localhost kernel[0]: Bluetooth Firmware Uploader v2.0beta2 by EMlyDinEsH(OSXLatitude) (c) 2012-2013, CREDITS: mac4mat(tonycrapx) and laloch(archlinux) Jan 5 12:47:59 localhost kernel[0]: Bluetooth Firmware Uploader:: Atheros Bluetooth hardware found Jan 5 12:47:59 localhost kernel[0]: Bluetooth Firmware Uploader:: AR3011 Bluetooth detected Jan 5 12:47:59 localhost kernel[0]: Bluetooth Firmware Uploader:: Firmware not available in RAM, beginning upload Jan 5 12:47:59 localhost kernel[0]: USBF: 8.291 AppleUSBEHCI::Found a transaction which hasn''t moved in 5000 milliseconds on bus 0x1d, timing out! (Addr: 4, EP: 0) Jan 5 12:47:59 localhost kernel[0]: BTFirmwareUploader(0xffffff80124a0000):: failed to initiate firmware transfer (-536854447) Jan 5 12:47:59 localhost kernel[0]: Bluetooth Firmware Uploader:: Firmware uploaded to RAM Successfully Then these: Jan 5 12:48:03 localhost kernel[0]: Bluetooth Firmware Uploader v2.0beta2 by EMlyDinEsH(OSXLatitude) (c) 2012-2013, CREDITS: mac4mat(tonycrapx) and laloch(archlinux) Jan 5 12:48:03 localhost kernel[0]: Bluetooth Firmware Uploader:: Atheros Bluetooth hardware found Jan 5 12:48:03 localhost kernel[0]: Bluetooth Firmware Uploader:: AR3011 Bluetooth detected Jan 5 12:48:03 localhost kernel[0]: init Jan 5 12:48:03 localhost kernel[0]: probe Jan 5 12:48:03 localhost kernel[0]: start Jan 5 12:48:03 localhost kernel[0]: DSMOS has arrived Jan 5 12:48:03 localhost kernel[0]: [IOBluetoothHCIController][start] -- completed Jan 5 12:48:03 localhost kernel[0]: Bluetooth Firmware Uploader:: Firmware not available in RAM, beginning upload Then these too: Jan 5 12:48:09 iMac-di-giofrida kernel[0]: USBF: 30.308 AppleUSBEHCI::Found a transaction which hasn''t moved in 5000 milliseconds on bus 0x1d, timing out! (Addr: 4, EP: 0) Jan 5 12:48:09 iMac-di-giofrida kernel[0]: BTFirmwareUploader(0xffffff8013666000):: failed to initiate firmware transfer (-536854447) Jan 5 12:48:09 iMac-di-giofrida kernel[0]: Bluetooth Firmware Uploader:: Firmware uploaded to RAM Successfully Jan 5 12:48:09 iMac-di-giofrida kernel[0]: **** [IOBluetoothHostControllerUSBTransport][start] -- completed -- result = TRUE -- 0x1000 **** Jan 5 12:48:09 iMac-di-giofrida kernel[0]: [IOBluetoothHCIController][staticBluetoothHCIControllerTransportShowsUp] -- Received Bluetooth Controller register service notification -- 0x1000 full-boot-sequence.rtf Link to comment Share on other sites More sharing options...
Macrow Posted January 7, 2014 Share Posted January 7, 2014 Hi, EMlyDinEsH, Thanks for your work, it's great!!! I have got a 2in1 mini pci-e card, it's Dell DW 1550 BCM 94352HMB. The IDs of bluetooth is: Vendor ID: 16700 (hex: 413C) Dell Product ID: 33091 (hex: 8143) I can't find the IDs in your bluetooth firmware uploader, so I added by myself, it works perfectly. So, Can you add the IDs in your next released uploader? thanks !! Link to comment Share on other sites More sharing options...
asxzy Posted January 13, 2014 Share Posted January 13, 2014 i was wondering if you would help me with my 3012 BT adapter. Here is the info of my BT: VID: 0x0CF3 PID: 0xE004 Thank you very much Link to comment Share on other sites More sharing options...
DanN7 Posted January 14, 2014 Share Posted January 14, 2014 AR3012 will uploaded soon..it's in beta testing now Link to comment Share on other sites More sharing options...
hamoodaslam Posted January 16, 2014 Share Posted January 16, 2014 Hello Every One, I have successfully installed BCM4352 in my Toshiba A665(Running Mavericks), by taping out pin 20 on the Azureware card, unfortunately this only advanced me to the point where the WiFi is working, No BT. I have tried to install the Firmware v2.0 Kext along with patched BT kext, and its a no go! My card is PCIe so nothing shows under USB i.e. I cant tell what the device and vendor IDs are. If some one can give me step by step instructions or point out what I am doing wrong, it would be most helpful. Thank You Hamood Link to comment Share on other sites More sharing options...
Recommended Posts