Contribute
Register

BrcmPatchRAM - Upload firmware into Broadcom Bluetooth USB devices

Status
Not open for further replies.
Joined
Jul 3, 2014
Messages
931
Motherboard
Dell XPS 9360 (KabyLake R)
CPU
Intel i7 8550U
Graphics
Intel UHD 620
Mac
  1. MacBook
  2. MacBook Pro
Mobile Phone
  1. Android
BrcmPatchRAM - 3rd party Broadcom Bluetooth USB devices on OS X

Introduction

A number of Broadcom Bluetooth USB devices do not have a persistent firmware.
These devices are only upgradable temporarily, called PatchRAM.

Everytime the computer reboots or resumes from sleep, the firmware in the USB stick will either be empty or running an old version.

In order to use these Bluetooth USB's with OS X, firmware needs to be uploaded each time OS X boots.

This functionality is already carried out by the Broadcom Windows drivers and is also available in most Linux flavours.

BrcmPatchRAM

BrcmPatchRAM is a kext driver which allows uploading bluetooth firmware into Broadcom USB devices on OS X.

It uses the vendor specific HCI commands as used in the *nix sample program supplied by Broadcom:
https://code.google.com/p/broadcom-bluetooth/source/browse/brcm_patchram_plus_usb.c

The kext allows to configure any Broadcom USB device in the IOKitPersonalities section of Info.plist.
Also it works when injected using Clover kext injection.

Firmware

Firmwares can be obtained from the Windows driver package, a recent of which can be found here:
http://drivers.softpedia.com/get/BL...etooth-Driver-6515800-12009860.shtml#download

In order to obtain the firmware for your device take the following steps:


  • Obtain the vendor ID and product ID of your bluetooth USB device.
    This can be found in "About this Mac" -> "System Report" -> "Bluetooth".

    For this example we will use my Bluetooth device, a Toshiba Bluetooth USB which is part of the BCM94352Z PCI NGFF WiFi/BT combo card.

    The vendor ID of this device is 0x930, product ID is 0x223.

  • Extract the Windows Bluetooth driver package and open the bcbtums-win8x64-brcm.inf file inside the Windows driver directory.

  • Find your vendor / product combination inside the .inf file:
    Code:
    %BRCM20702.DeviceDesc%=BlueRAMUSB0223,          USB\VID_0930&PID_0223       ; 20702A1 Toshiba 4352

  • Locate the mentioned "RAMUSB0223" device in the .inf file:
    Code:
    ;;;;;;;;;;;;;RAMUSB0223;;;;;;;;;;;;;;;;;
    [RAMUSB0223.CopyList]
    bcbtums.sys
    btwampfl.sys
    BCM20702A1_001.002.014.1443.1457.hex

  • Copy the firmware hex file matching your device from the Windows package.
  • The firmware file can now optionally be compressed using the included zlib.pl script:
    Code:
    zlib.pl deflate BCM20702A1_001.002.014.1443.1457.hex > BCM20702A1_001.002.014.1443.1457.zhx
  • After this a hex dump can be created for pasting into a plist editor:
    Code:
    xxd -ps BCM20702A1_001.002.014.1443.1457.zhx | pbcopy
    pbcopy places content directly onto the clipboard for pasting

Firmware Filename format

Note that the firmware configured in the Windows driver might not be the latest available firmware for your device in the package.

The firmware version displayed in OS X is the last number + 4096.
So for example firmware BCM20702A1_001.002.014.1443.1457 will display as "v14 c5553".

I have found that any firmware in the same range is generally compatible.
So for the example device above instead of BCM20702A1_001.002.014.1443.1457 it works fine with the newer BCM20702A1_001.002.014.1483.1651 firmware also.
Unsure if a newer version gives any other benefits, but does not hurt to try.

Download

BrcmPatchRAM can be downloaded from here: https://github.com/the-darkvoid/BrcmPatchRAM/releases

Source code is available here:
https://github.com/the-darkvoid/BrcmPatchRAM

Changes
v1.7
  • Re-write of firmware upload functionality resulting in faster and more stable uploads
  • Publishing and Unpublishing of dynamic profile leads to faster recovery time when waking up from sleep (also for devices which do not require firmware uploads)
  • Changed firmware for Toshiba 4352 Combo [0930:0233] to the Windows driver default after feedback the previous firmware did not work for everyone.

Credits to Rehabman for the work and development that made v1.7 possible.


v1.4
  • Refactored logging
  • Added support and firmware for the following devices:
    • 0a5c:216e HP Blackbird 43162 NGFF
    • 0a5c:22be Broadcom BCM20702 Bluetooth 4.0 USB Device (Personality only)
    • 0489:e079 Lenovo China 43162 NGFF
v1.3
  • Updated firmware for 0b05:180a to v5810
  • Updated firmware for 0930:0223 to v5805
v1.2:
  • Version number displayed in system log now always corresponds with the version in the bundle plist
  • Refactored dynamic personality publishing, including support for future OS X versions
v1.1:
  • Resolved a bluetooth IOKit personality issue in Mountain Lion 10.8.5, credits to Kaminoreal
  • Updated bundle dependencies to work with Snow Leopard, credits to Kaminoreal
  • Updated firmware for the following devices:
    • Updated [0489:e032] to BCM20702A1_001.002.014.1443.1485_v5581
    • Updated [0489:e07a] to BCM20702A1_001.002.014.1483.1651_v5747
    • Updated [04ca:200a] to BCM20702A1_001.002.014.1443.1492_v5588
    • Updated [04ca:200c] to BCM20702A1_001.002.014.1443.1494_v5590
    • Updated [050d:065a] to BCM20702A1_001.002.014.1443.1482_v5578
    • Updated [0930:0221] to BCM20702A1_001.002.014.1483.1673_v5769
    • Updated [0a5c:21e1] to BCM20702A1_001.002.014.1483.1647_v5743
    • Updated [0a5c:21ec] to BCM20702A1_001.002.014.1443.1460_v5556
    • Updated [13d3:3413] to BCM20702A1_001.002.014.1443.1481_v5577
    • Updated [413c:8143] to BCM20702A1_001.002.014.1443.1449_v5545
  • Added support for the following devices
    • Added [13d3:3418] Azurewave (4352/20702 combo) with BCM20702A1_001.002.014.1443.1480_v5576
    • Added [13d3:3435] Azurewave (4352/20702 combo) with BCM20702A1_001.002.014.1443.1501_v5597
    • Added [0b05:180a] Azurewave (4360/20702 combo) with BCM20702A1_001.002.014.1443.1611_v5707
    • Added [04ca:200f] Acer / LiteOn (4352 Combo) with BCM20702A1_001.002.014.1443.1521_v5617
    • Added [0a5c:216f] Dell DW1560 (4352/20702) with BCM20702A1_001.002.014.1443.1572_v5668
    • Added [0a5c:21fd] Broadcom 4352Z with BCM20702A1_001.002.014.1443.1463_v5559
    • Added [0a5c:216b] HP Rapture 4352Z NGFF Combo with BCM20702A1_001.002.014.1483.1646_v5742
    • Added [0a5c:21de] 4352/20702A1 combo with BCM20702A1_001.002.014.1443.1461_v5557
v1.0:
  • Compatibility with:
    • OS X Snow Leopard (64-bit only)
    • OS X Lion (64-bit only)
    • OS X Mountain Lion
    • OS X Mavericks
    • OS X Snow Leopard
  • Added dynamic IOKit personality publishing for devices not present by default in OS X,
    this makes it easier to add new devices to the configuration.
  • Added DisplayName IOKit personality property to allow specifying a name to display in USB devices
  • BrcmNonApple.kext is now replaced by dynamic IOKit personality publishing & DisplayName functionality.
    It is now removed.
  • Added process timing output
v0.8:
  • This version of BrcmPatchRAM is using an event-driven continuous read model.
    Boot-up time with the bluetooth device plugged in should be significantly faster.

    The event-driven driver model is new and testing feedback is highly appreciated.
    Report any issues using the GitHub issues functionality on the BrcmPatchRAM repository.
  • This release is extensively tested against:

    0930:0223 Toshiba 20702A NGFF
    0a5c:21e8 iOGEAR GBU521 USB Dongle
    0b05:17cb Asus BT-400 USB Dongle
  • Updated 0930:0223 Toshiba 20702A NGFF firmware to v5770
  • Updated 04ca:200a LiteOn (4352 combo) firmware to 5769
v0.7:
  • BrcmPatchRAM is now compiled against OS X SDK 10.6.
v0.6b:
  • Added support for Inateck Bluetooth USB [0a5c:21ec]
v0.6a:
  • Added support for non-UHE Lenovo Bluetooth USB [0a5c:21e6]
v0.6:
  • Added device specific firmware for IOGEAR/GMYLE USB bluetooth dongles [0a5c:21e8]
  • BrcmPatchRAM now "re-synchronizes" if there are outstanding HCI events on the interrupt pipe while starting up
  • BrcmFirmwareStore is now treated as a published resource
  • Both Debug and Release builds are now included in the release

v0.5a:
  • Added device specific firmware for Azurewave 4352HMB [13d3:1404]
v0.5:

  • Fixed interaction between BrcmPatchRAM and BrcmFirmwareStore, resolving a problem where BrcmPatchRAM would not load.
  • Added device specific firmwares for 0b05:17cf and 0b05:17cb
  • Increased wait time for devices which require more time to settle after firmware upload

v0.4:
  • Minor tweak to v0.3 to not issue an initial firmware version request as this seems to hang some devices.
v0.3:
  • Implemented firmware caching, firmware is now cached after initial boot, leading to much faster wake-up from sleep performance.
  • Additionally added BCM20702A1_001.002.014.1443.1457_v5553 firmware.
v0.2a:
  • Resolved a newly introduced problem where Bluetooth firmware would not upload properly after wakeup from sleep.

v0.2:
  • Added BrcmFirmwareStore module to allow shared configured firmwares across devices
  • BrcmFirmwareStore caches firmware instructions across firmware upgrades
  • Added support for Dell Alienware (4352/20702A1 combo) (13D3:3411), credits skvo
  • Added support for the following devices (untested):

    - 20702 Combo (0489:E032)
    - Lenovo NGFF (4352/20702) (0489:E07A)
    - LiteOn (4352 combo) (04CA:200A)
    - LiteOn (4352 combo) (04CA:200B)
    - LiteOn (4352 combo) (04CA:200C)
    - Belkin (20702) (050D:065A)
    - Toshiba (4352/20702A1) (0930:0221)
    - HP SoftSailing (20702A1) (0A5C:21E1)
    - Bluetooth USB Dongle (20702A1) (0A5C:21E8)
    - Asus (20702 standalone) (0B05:17CB)
    - Asus (4352/20702A1 combo) (0B05:17CF)
    - Azurewave (4352HMB) (13D3:3404)
    - Azurewave (4360/20702 combo) (13D3:3413)
    - Dell DW1550 (4352/20702 combo) (413C:8143)
v0.1a:
  • Added support for BCM94352HMB (0A5C:21FB), credits sirock
  • Updated default BCM94352Z (0930:0223) firmware to v5747

v0.1:
  • Initial version supporting BCM94352Z (0930:0223)
 
Test Results


  • BCM94352Z (20702A1 Toshiba 4352 [0930:0223])

    Chipset: 20702A3
    Firmware Version: v14 c5747

    Paired and used successfully with:

    - Bluetooth Laser Travel Mouse (Logitech M-RCQ142)
    - Logitech Elite Keyboard (Logitech Y-RP20)
    - Logitech MX900 Mouse (Logitech M-RAB81)
    - Apple Wireless Keyboard (Apple A1314)
    - iPhone 5 (Apple A1429)
    - iPad Air (Apple A1474)
    - Sennheiser MM550-X

    All mice and keyboards were paired and used simultaneously.
    For the Sennheiser headphones, the bluetooth audio quality was increased using:
    Code:
    defaults write com.apple.BluetoothAudioAgent "Apple Bitpool Min (editable)" 45
  • BCM94352HMB (HP Supra 4352 20702A1 combo [0A5C:21FB])
    Credits: sirock

    Chipset: 20702A3
    Firmware Version: v14 c5744

    Paired and used successfully with:

    - Stereo BT Headphones JBL E50BT
    -
    iPhone 5 (BT HotSpot, New Airdrop, Handoff)

  • BCM94352HMB (Dell Alienware (4352/20702A1 combo) [13D3:3411])
    Credits: skvo

    Chipset: 20702A3
    Firmware Version: v14 c5546

    Paired and used successfully with:

    - Apple Magic Mouse

  • Asus (4352/20702A1 combo) [0B05:17CF] & Azurewave (4352HMB) [13D3:3404]
    Credits: toleda
  • Asus (4352/20702A1 combo) [0B05:17CF]
    Credits: marius
  • Asus (20702 standalone) [0B05:17CB]
    Credits: dokterdok
  • LiteOn (4352 combo) [04ca:200b]
    Credits: gabeboy
 
BCM94352HMB - works

Ven: 0x0a5c (2652)
Dev: 0x21fb (8699)
Chipset: 20702A3
Firmware Version: v14 c5744

Good tests with:
Stereo BT Headphones JBL E50BT
iPhone 5 (BT HotSpot, New Airdrop, Handoff)

 
sirock,

Let me know the .plist changes you made, so I will update BrcmPatchRAM accordingly.
 
sirock,

Let me know the .plist changes you made, so I will update BrcmPatchRAM accordingly.

BrcmPatchRAM.kext/contents/info.plist:

BCM94352Z -> BCM94352HMB
Firmware=
Code:
<789CBDBD D992E438 B22CF83E 22F32FC4 4AE0BE01 20F9FF9F 34AA6A06 BA476456 9F92DB47 26BBA3E8 4EE70A18 6C37B5FF 73C483FF 32FEFA13 FEDFFFE7 FFC476D8 BF70E053 EDFC97E3 C1FFDF33 3C170F7D FC1F3E56 3B781C47 3C79ADA8 8FBC463F 7EFC0B17 2EFE4CFB 3187C0FF E672A690 0AFE77F0 0E759DA5 9633D7A7 3EF86F8B 47CAF1D6 6F2B175C B1E1A18E 2395A56D 38A36E9F 747DDE32 F4C4C78B D96E591B BF05BEE1 C2B79174 342E12EC F779BC0F 6F836063 7114DFEE 91D86F52 7DFFE9DB E5D7B9FC F7E8FBD3 3E6E695C EDA888CB 343D13C6 EF7DEAA3 3E31E8D4 149EA3AC C79F6884 7C3E6DF1 939E63F4 F80E64FE 1ED6BA4A CB775D23 1CEFFE86 69E35C9C F8B95C7C F763541C 64EFDB5A 6F399691 524EE5E1 CBA5156D 647985FC 9C3863D4 87E31D2A 6FBE306E 0FA601D7 3A6A3D12 1F7DE1BC 3B1C91EF 83F9481C DB851FEE 887D7866 4C694AB8 F38A7EDC E2781B09 848803F3 8DD9C54D 1726F6AA A01E1C98 07F625BB D0BAB1AF 6B52526E 76DC22F5 E0B7C4E3 6E7CC7FE F9601FCE 4DD3F7E1 9CB9B00F 2F934E10 4BD48834 8CC6E77F D5FF57FC 7F71F125 42CFCF3A 6EA36F11 C26DCB23 1D5FFBF1 4B4D7BB0 B11EBEF7 373BBEB5 9FD7D1F4 F33FEBE7 FEDCED3A E7F1EBF8 693477FE 7A9E781B 315D0DDF BFF6D718 BA11E2AF E3351A1C A79FFB53 6B45C7FF 7A9EB096 687EADAF F7D283DA 5228BF8E 77E681CD AFEB7411 3576D9FE CF522AC3 4820867B 53EBFAFD D07ED19E DBC3F336 B3B18514 40959FFD BE22ECF8 65FBF719 A267FC6F FD7AE838 B35EFEF4 95687BF1 DF62574B BCE0BB9F CFECAB6A D9F1FC8F 4DB7BD56 CA76FCB1 8F3FFDA9 96EF3F3E D78A8593 FA75ECFB 0B29FE73 FCF7FEE9 ACF8F7F3 D4F7F9FD 17E728D7 714E0D4A 06636BBF 092819C3 FE3D266B DC3692BF F68FB1B4 FF17218E 68B3147E 5D3F5CD1 DFFD17A1 5C414F4D 42B9A791 4012CD7E 1DD44A13 278DBF6E D69231EC F8E7AAD2 FEFE6B35 A43B6BFF 4A143221 D61E72C0 458E8699 C967C310 E4136CA6 1E270E38 6B1EFC2D F6639E37 78B65862 E0D0AE7A 3F1CFEFE E0D82B68 4D7258C1 DAEA0C60 4C903F33 8C2889A8 4982C031 C2C793AE A71D0322 B29131DC 100537B9 C3FFF47B 322A6FF1 E24465DC 98B71911 CCB48C7A 9F5773B2 FBCB5FFC DB1FA6EE 09ADF15E 4F0DC73F FEF3E3E2 BF3B8E34 F0AF8EFB EB7DEFDB 4820FF94 65EF49F3 DF5D3CFC 8F0F9145 1464CBE7 FC5FDCD7 FFA77D36 7DCFF3BF 3B7DAF0A F08F2362 D397D3FF 74DC6123 57FFC7E3 DABF3C6E FEBBFBDA 8C49218B 4602E5C3 F2FEFC97 DFA9FD1A EEFF1FF6 B52AA531 87249D48 42055C9E AF67ABD3 98710869 05E80850 6449CA31 8215BC9F A08FE409 6E31B1E6 27F48589 5F66C11F B8CF3CF1 075E3121 FFE7C01F 8F050798 D0AEE78D BF07620B 97858299 17B5DF44 0D187F38 1FCA585E 381F923A 43BAE785 F3D7A498 C31FCE87 DE94C1C3 32586906 CFCAE0C8 F9C2F917 CEBF703E 08335F38 FF6AA02F 32F72925 7940A7EA EF376A53 EFB7D2D2 A56F2D88 3F170E40 20916310 9A690A35 E72855F2 98F800F6 FF3C27E4 31B4C6B9 CEEB399F FB81300A C6415B2D 3ABF1809 542AE038 E898E9B9 F539DAC5 7891713E 0F6E74D6 F0981ADE 284321C4 8F6BF222 E7F97005 5ED05421 894BE579 B1E101EE E78CF3B9 F9B93C9C 39A82401 FA600F2B C5704189 3867E143 9936DEB2 29247860 BCE42C3F E8B005CA F4DCDAED E48167CD 8FF4F927 83EAF564 B84C7CA8 905E7E0E B76565B3 1A1A4409 1E6472B0 4ACC36D8 0157C13B D64EF181 810ACF99 AE67F9F9 7C865A9A AD3E9EFF 34DCB392 2EEC7C9E DBAB06F9 B2A97A62 9E3E557C AB3337D3 DC3A9EAE 658C121F 29173DF1 2835F706 BBE32A89 53B6DF00 173C4F8E 8C91C202 25F6F779 A00435F1 EC4653A5 8AC341E3 289FF9DA CFD3128F EF339FB2 0B2BE617 F470451E 5FED7848 FA6E2470 52A901E5 84DAA013 63B0218D 616D54FF 0E3AC745 C3EA2084 7B527D9C 4BC74468 BCB45149 20C733B4 8DEFA462 39FA4482 AEB03C7E B2313B66 AE9C4D75 39FE764C E5C4AFC0 97050D15 4C3C7482 5E38F1CB 5EE224B1 540C1F8E 0A85C318 27E80B2B 6F345A02 99E478E1 7BB1EF91 DF3BF4A1 117BA03C 683C0FB4 025BECAE 8F4C9CC0 F3135FEE A23A9C03 C400083F 7042F17B D2B1C98E C5C88618 C38A246C 8CD1E820 7C1114E9 8E041BF9 8C57E0AA 6BEF7B5F 50A3F58A 455A4B9C 3FDF5B04 7F577208 72000C11 267CF2FC E6E4B3C9 E5FC103C F73E959C E6900D44 75B27141 C3DCC8DF 0B136BFA C67FC815 40C14602 CD2F22F5 FB689751 3D57777A B8C48F1E ED222757 2E9527BD 081D0997 0C784EDE 9F1348AA C5F864B3 E9B90ED2 69ABA857 BB9E5E24 606D7D56 512BC569 9EAA2078 038CC368 E47E070C FBA0A96A BCA64F0E 61E937A4 1BAE7E86 C177E1F0 855CF3A3 B76A98AE A782069B 565FFD1E BEE7337C 3CA7A4F5 94CD6370 4E9362B0 CAF97D4E 7ACF2107 0E75E5A7 8A17E21C 9892B486 8FD1FC9C 42E903E1 532019CA D973C73B 2D5A8CA1 9239875E 7203C9E0 191F8E5E A73DD3B4 D093918B 9E0B8477 AEBD8EE7 0DBAA449 DE7E3ED7 8714484E A15D146E FCDAC52F 6F2E8E4C 82E339C3 040574FB 154F2781 67FAC53A E9066B3C 80BE1325 192E8835 71D22F74 3C5D5B0A 04B13958 9BEE37E1 A045AC0B B2B9B3FA 8DC064C1 FACE70D1 F330C5E6 6061B413 2F7D9121 4BA08471 E711B5C6 217C21BE 06054ADB D738FC39 F86CE763 BA59C41A C51A1BB8 7689CFC5 6DA434B4 01C38DEA D0808171 F3821CB0 6BEDEBFD 319149D6 773EE33E 67809082 18703161 D1664E32 2AC111E4 4179E8AC 0181CCD5 2138F2F3 0A8E5386 D8C2FD49 14B8F595 8D90AE56 E666D4D7 451D66DF 5F6BE02E 0D3A90DF BFD4C797 64710140 FD08E3BD 9CA1E318 50FDA852 54EC9867 F3C207BC 5A6EA2B3 BD6337CF 5EB8CC21 96233413 185AE713 B1283279 E7E9EA60 7F28C70F AA5090D4 102C6181 DA4E3093 FB94AF29 0E5E6C33 3B48D433 808DA454 DB9D4E0A 8E34B805 9D63F6EC E65485F0 7BA4E94B F6407716 DD0FD846 7E07776D 74C4C8CD 14E30463 BAC7433A BFB8226E 4C8B243D 2485AF88 22775E1B 720FD5F1 D0A09324 9C7BB038 9EC35784 2604CC7B 05197720 C6E33A31 59D415EE CFF1A9E0 F80922AA E2206497 F1C1DBEB 1E5D0C5F DAD1AA76 0E99A9CE 9B4F8316 7086C905 41C280EE 99CFB027 89522448 8D2BA6C6 41AEDC0D 42134483 8533781D 708357FE 737F3275 ED918886 19BCAF75 427BE7E2 EAD9AFF5 D82A7E89 F13162C4 A95FFC3C 96F0B540 D7CD49A7 E4B56B70 21E2DDFB E30EE2A1 3BD8A0D5 4869E38C FBC9C676 C2616E4B 527159AE 6EF018B9 8347725F 700E1C0E 5EE51C60 5B7288E2 8D207326 0D20BC9F 31F9D0E9 605869B8 D61A68CE D1210A91 09D2C36D 16B723EF F5A5716A 891A7930 B16343F0 5B7E46E8 09B9E8BE 49FE21F1 80B29AE4 2708ECC4 D43D90AB 7A7D3F67 40E339F7 B3821789 4C22B526 2713CCC0 D4F3DC5B D0806229 5F794E94 0F59F701 35A73D4A 1079A3E1 7E38B7F9 395873E5 DCE70417 4E697DCE A13EC573 92F4299D 7365F22F 3F0717D3 6CE4AFFB 5042F29C DEDF67BB A901EF31 68D1EE53 F3670CA0 F3DC1C03 88FA3E83 91C0BCD7 3B884FCA 436E4F5A 08F9364D E1024B37 5A9E4606 27EFBED7 1A29A04A 55072D62 A2A510D2 627A1FF4 4ACF043D 537BDEE7 84D9C62B E162B581 A7E6A273 782C242B 154CF9CE EC9C08F5 6EEEC902 03D67D30 85EF6465 279EABBF F7496023 7D9F938A BD4FFA9A 608CE1C5 73D67CEF 435793C6 A09190A6 591E69DF 079381F7 6964A821 72F2C903 5299CBCD 2CFC9EF0 ECE40111 03E3EBB6 6C330DC2 01AB625E E9C473CD DA68AEAD D35D6C92 E4A9A635 4D30601D DF0D0276 C98E2BDF 3C808B88 E374E757 401EE207 09CF459E F6FDF95D 24090BAB A62DA852 3F9C0BAC FB94DACE F5FE35A0 60CC3716 E00926D2 CDC44A4D 1EB4AD32 6D5FE032 1EF1CDA0 06A5331E 820C07E7 346370A9 D7759B9A 06657341 4B904360 DF13E727 67B423D8 F930FA17 95D094DE 09823273 260BB988 C1D94AFF 5E193817 8F76CE4B F72D8C57 4042CFFD E2509186 4CBBF899 54BC8B69 08760F18 F7F7B59F 330D2382 DC3EC707 68447C2E 529D4F1C 58180441 307B10DA 49E79B54 5F087C37 11008966 4BE94796 D571DE52 651F7D87 84CEA94E EE5B8373 820708E9 1E394BD3 EF59EFDC A5F3C248 B6B90281 3523A858 B58528F1 EFD1BE87 DBBF5FF6 3DA78CC1 CEFD725D E0BAA9C8 E287E427 52DD5A5C DE0C12F1 040650A6 548C4929 1F1F3B2E 7F1D838B 8F00E94F D5A35081 81169006 74E2A9FD 50F86532 5E93526B 92056140 06E42EBF 9300AF88 C3A01960 80F37C06 3E8F7ED4 57ADE94D E7DDBC4E 8454C74B 36FC8D40 D335E8A5 414AB75B 27F3F0C8 0568122A 27469383 05235D81 51CCB4FC 036223D8 DE6B6A72 43B6FDE6 8CE604DE 0C5A4120 DAF70603 529C6736 E9E3C5B7 A9D86440 DEE93BBD 1EFADD23 199D047A 5B64413E 4CBF7FA6 89291DA9 0D3D07C5 054526A9 ED26539C 51DCD12C 95A3F936 2C7BEE90 6DDB3C82 73F87D82 5F7F87A3 56B6EBAE 65DBCBEF B3DAF018 C17D5D87 EFBCF2DE DA0A9FCB 07EBB228 D4F2EF50 0A5D4B48 3018CF7A F9E0E175 B51FEA9C AEE31304 65C2268B B14E7D06 B11C5215 FDB36D49 8952073F 0FF9F7E7 A2F31043 FFC82BE8 AB2360E5 D1004DD9 D86FC0EA C0EA912D DF12A312 11E4CAF5 8381C776 04584E31 EB39E8C4 C0DF8AF6 99DBF64F DFE3920F B2F3DC49 997A3D1D D76AF85B 548EB0ED 2BD816EF 1EB985F0 0FBC5F4B B65DD806 711DE974 9894A930 FA807A0A 85FF879A 639C2963 59D28B49 87E343BB 7FB8FEF1 6A691C9B F4C3D0C5 0B33484D B5343E16 8E9288EE E1A34B18 093C7499 2F0AD7EB 95BD0C0B A7421D94 174852EA 3A75E392 ED021372 067AF6CD 0BCDB83D 523A2F43 892E7A58 06772EB0 749E77DB 795A1690 A5F47FFE B4CC73B9 E9BBE1FD 0E39439C B27BFCBB 41A773C0 DF67D8F7 1A6ECD83 24D2DFCF 21CBCEE7 B564266B 30A16889 65AFDC5D 94C4942E 46EEC1DD 4040B006 2139BE0C ADC38C52 C800261F 547253B7 5978EDD6 F358EFF3 5097A260 F36BBF7A 3CDE9FDC 2FDFAF41 C973FB58 9F736F3F B7AD9EFF 76EEF19E AB50FF48 6B85FD4E 18BF4E5D E4F67180 2D078112 A1801D9C A9D42FE6 615CA980 0D8B0402 BE901BF1 E5319974 31DE3EC0 B3F3E1F0 6B3D1991 352A3A57 2F2FE5C5 6FCAD300 537A9B5F 9B4A1BB4 583EFACC 76CE4102 7ACCD2E6 F9779227 CDAC7DCA C2E284C1 CF355E83 9A78DBC6 12CCDAF6 1924283A 72B862D8 4DE98238 DE160607 099AEFD0 96CED6D7 B2C8379E 4FF905FF E0D03ACD D23AC77E 87E97A12 C4A9B963 307E7CAE A2FB6FFD A130701E F739C357 E9BDEC1C 3DD7F8BD 4A4BA86B 68F593B9 9D4EC065 F5BECFC1 F83D5F0B A5703D83 C8D23E07 CAE792B3 6DF5B5CF 8102F97C 380CECBB 353C9F02 63763DED FB75A3A5 8C40B5BC 3735954C 3AD63AA2 2B075A32 A96944BB 01266B6A B2187863 C017528C 1E6D685F B3C62AEF B6A2D952 1E0BD8F0 5A9B32E5 DAA168A9 DD2DEC53 D47C1609 ECB53D85 E9F3F075 511DE0A0 CA7F547F 3CBC1F63 1A2EFD8A 774C4F49 3FA36422 9CD2AE6C 59453DCA 5414E15C CD9E436E 9FDCFB6B 651F1D73 09559181 95B6CDB3 829D984C E7506B6D 36DCAF37 56F03CF7 4FAE56C6 CDDF3F5C AD1B871A E19B43FD 9A607CC1 B3047B3D A5787082 39E97E9F 19DDB564 C7AFDA6E 1D7F4E4C F0098ECB E3C7E7F8 F51ECFB4 11ACFBFC 39FE59F7 321288CC 65C16447 2A48E3D5 60F74A5D D5B5D5C1 5C2AA822 19833339 08F4EF95 FBE62AF4 17ADE9B9 29EE67B4 EB6C570A AD8298CE 5B0A25E8 635880A5 0F0B6CF4 AF81138F D3D74949 60838DE5 90BF5FEA CC52222F 23B60ABB B73CAF3F 7D3C52AE B0EC744E 85814B5F 33B645E7 C32C1813 C4776CD3 1172397B 4604F4C6 D9ED9E6D 7CEE79F3 9E85B973 3C27F2AA 502ACF7B 13D645BF E6E0673B 072A51E1 BB87A038 021798B9 CB68289E 7AC5ABD2 25157F73 869A6E5A 2F2E7E87 73DE44D1 BA8960F9 2AD73974 CDD58C07 0BE2D659 84D3B95C 52B37382 826E545C F0EE7C67 F3FD26A9 6D4E02B0 9DF96CCC F7C20281 49DCE9A0 E1406295 0FC87CC8 CB8BE64A 60A4EEFA 5807812F 85A51A0E 2977ED70 EDDFB66E 41900071 3CB8A87D 4F8CC64A E642A6A6 C07B6429 F0317432 206AF720 3EBE64A6 18120B36 E57D2C85 5598A816 3E41975A 40A572D4 E072EB48 BFC2EAF4 A61FB54E FA93A292 BFF8D7B3 9C553648 8A4C5EBF 7D9B5134 76140F1C 3192C9B3 F67B411F 160DB40C 43405614 F334F10E E08AEB69 7DCA99B4 A83C6D2B 2B345378 2753ECA4 55AC61D1 4E374E7C 6BBA41C5 84CD2EE7 39C55E54 B4EDB87D 625FDFE2 04E7AAB8 50907FD5 9DF7B54D 72201205 D9FF6DCE FB27FBFB C6992516 CA721260 6C9C5125 4600C958 A8463E32 D9DC695A 317D5929 5858B954 5414812A 6D4866D1 967FF0E2 213DA376 51F8E3E7 8DB13EE7 5DDDCE83 8EDCDFC8 55378729 CF8B32DA F5F21396 B91C1A0C 89067221 D9D8769E 0E71C5E8 0481E6F6 86B139D9 A0E732B7 53B85117 697A560F 1181C2A3 ADC61BA2 8A137B27 860A8D3B 818A26BE 173A8D31 96C39FE7 2AC738B7 FC3DF8FE 8B7E0993 F37A7F72 0A06C148 F3305B6F 29B35AD5 37EEFD9E ABE89DE9 53AF8E00 C63778CE D325DC03 83625829 4AC8A5FF 0562F626 878695FC 86B8938B 4E5D8F61 EEAC08E5 A41F06AA 90FB7170 E905E226 11F1D2D3 B963FD5C E7494602 C5A24A32 5AC109A6 DC288376 FCBD59E5 19064CD7 4D55B79B 176D3F94 280A948F 178A221C 2A8698DB 35E37E80 C3BD5CF7 61E7BC5C E26468D6 A8524E24 B12986AA 2E3D0335 636E9FF6 7AB978ED 743201C4 AF9D5D7B 0E7978A2 674C719E 45A129AC 489E3FD6 D6514EF0 33CFE755 A41A0376 2BCF7A6E A552E7E1 8E5C59B8 FE4D16FA C8514322 3BA161CD B957E773 59FE4FBC FDFC000A D335E861 B46B95C9 67A8BA9E DCBC58C3 FE4E8F5F B362B65F 2ED52F8C 15CDB76A D794AE84 757D04D3 59C2F430 D5A22F8E 5C16CF09 02E016A2 D84370E7 D9D75CFB 39290365 91FB7306 25092889 1C635E29 2B2E4D42 EEEE6EE4 0404F99E F5E0CB83 AF58C594 2BD7B210 73F00981 1237E626 90BA6C95 1C347114 34F509A6 2958F0E0 209476EF 55825B34 B0457FD0 EB7077EC 3ED79526 4D86FCDD BA1FF44C C8329E03 4573502B 5E529A74 8E7C1F1E 32C26F67 19463C1E ADBBE801 83564F4D 9C2B9281 A08313AB F5909495 C2D05B49 79E16F52 43A674C1 F6E7E762 9FE9CBC2 DA9934A8 22ACC9C2 C8576A76 157A9DCD 0B3D3477 0A2BC694 1F49141D 73EAF13C 25A0E875 3B735298 FE70D330 5F7946FA E7565664 8EF10BD9 AC43DF61 74E9391A 25A9A29A 9284B847 E3EFE03F 721C8605 5B374167 B073B880 9A7F6E9F CF3C2EC4 7F3CAEE9 D8EEC752 EAE2D3FE 1D82D0CF 3BED3A01 BF553FB7 E2BCEF6B 7E3EDF29 FC711FBD E7DF9E8F 9FEBACCC C4990A8D 9EE15A0D 7CFF4ED4 871E7EEE 5DCF450D 8FAEB09C 4B9E5762 DE109E2F FBB383B9 A61BE39C 743D981B F1E8CF32 96089B99 137266E5 841C364B A4977241 D0D1699A 53924C3D 697C4034 9D0A1326 5391B0FE 73BBB1A0 ED7B6DBE 352FB4E2 C04C60B4 63E9A302 FFD3E787 99F658D8 41127796 448FE290 7A42272B D5ACBE5A D55A1A4C 98721F1A 74B69B94 BDBA257A CDE56AC6 E5895F87 855C57B1 EFB066E4 E06C524C B97FCA40 8176A5B5 17AE6C3A B4A75083 F3E878AC 9C53BFDF D9F3DDED BE3B2FFE F6E7D879 EF77B6EF 77B3EDCE 93BFFDBC 729B9D8A BB99CB93 E14D254B D8B61FB6 3D7D3FCD 6BB303FD FBB0FB9C 7E7CCBB6 855D6A29 E9FEFDCD EFF7E7AB 3148577C FCF92EFA EDBA0CFD 7298B73C 8DCBD5C9 5D0C007B 506AC4E5 2FD38365 6B4C7FB8 9A6D10E9 2E3415C7 BCB277B3 CC8FEA83 2C570E75 3E1827BA 8EBD11A6 D2B2644E 53DCE548 62BE23E8 13860AAC 6E30AF4E 090ABABF E8820DB1 74F2EC59 7AE4AA9F 25306334 43BA2D39 0E422F51 FA674D31 A778C632 C0FA064C 963020C4 828CFFC1 E210D82D ADC778DD E54AA713 555EA683 97C39EBB D2356CD2 55FEB0CF 56CFDB28 F806780C AE8DCF4A 94844D02 A3E9960F 6D78E2C9 90AA053D 905E0585 57E8084D 4AACB2DF 92B6E13B E1EAB328 3EF79781 032D2264 5F4858E0 63288CC4 24883B50 06DCE600 7E1DC287 B6BCB61C C5D057D2 E276E9B8 C0F333D6 B891C094 F8BE297E F943CCCF 2D65FE6B 95B600F5 B21F54B8 072E0245 3FF3624D BE296865 7A91E4FE FBE3E348 DCC48279 98EE6382 7E8C63EB 97A1410B B2D87748 2ED00F2E 625EEDE3 9FAE97FA 4A6639CE 02CD8213 81A9E7FA C9A94372 775A7A53 CF5A640B 2C193441 838E090A 03DB83DE 98FBD0A4 54258C5D 7282D267 14E5B75A 27856460 65010413 DE356162 6977CC12 41FDD862 82232653 0E7410C6 4A4CE1C5 16FB6BBD 528411B5 1AF65DF8 8CCB2FB9 0E2E5C21 2A2C7893 40E816C4 F542C316 CF15700E 452C9967 1F39C693 C4629FA1 C980CC19 6B5162E6 9D6F7BD6 793DD0FC EE539C37 E3F3B2CF 49D153FB 7CF273B5 CFB053E6 4AF7192C A33E31B8 A10BF546 5F885F08 FAE6BCEE 5332A43C D71CF699 91E679DA 67DCF59A F93E3BCC 7EBED10C 37038920 D207CCCF AE430E31 266ED6C4 E2B9B821 42AF124E 59D698AB 0C3399E1 03CAD2F3 6AD4D960 8F3C1756 992CE6B3 ECE062C6 2A0AB68A 38998CEE 9F837EA0 9BC9260C EB7BDAD7 75412C6B F531D18B 991CB2FC F53C1477 C93E2772 2F23320F F81AC1A5 6F1145C2 CE269E48 88942E1E 7F92371F BA90D4B1 D096FBC1 9C6330A0 15736F7E 1EACC7CB F5DCB189 97994A34 C43A7D68 D0D86930 52BF8D30 64DAC930 01F751C6 C3FAAE8F 15AD506D 656666CE 206F6522 A59A98D0 14034463 127B39FD 785973D0 D7C80DEC BD2E7194 AC94B083 59E04602 D722FF38 16982B94 E0EDEE60 149F1626 0D045AC8 DA3F9859 20AF74FC 2861B801 5D1A189D 7656C96F BD3415CC 96E840D7 0D3B27A2 2AE35F2C 2932C907 CF5CC63C D38DBFFA D83D3A88 A0D3699E E4986548 03461D28 5B6A2BD3 B55AB88F 930A1325 74985815 4C84069B BD3CC81A A83EE15A 3DD0560E 3070032D 4F239E78 C23CC243 A71B96ED 94527934 BCC5628E 3AB68F55 26D6F290 48F1E689 462B5738 6E030E95 829F83F1 0291262A 77A57FDD 2F5ECA00 E845FEB5 3E67EDE2 76B49B70 3F1C53C1 797122C8 A3E54A45 FA4EE794 23FABA8E 3D2E7532 7F2E329A C1406D73 E2E6582D 669D819B 268CDDB5 8DCC7172 4EC8A121 668F3ECF 66EFA505 53C5CDC2 DD594CF6 F92DBA2E 702F153D 2AE298C2 13ADBA04 9FF5A6BA 4867BC25 E36F5131 942F2C90 AACEE891 71BD7C89 14D89D53 534DB5A2 BC348AE3 8060E1CC 0CADE856 F1848549 F4E04C49 1EA5C83A 8680C280 2C4FE264 221033EF D793CEF1 8A0DAE65 1091AC85 10AD8837 652B2BC5 8BCEF045 60FD4CB1 DA04C9F1 020EC4D5 C58CFE05 A2E14478 AAC13199 804D6514 13785AA8 05F35EED 7DC05371 A7C6D24F BE3746EA 1631269B 2839E171 EFD44E25 CF84ED3F E4D9EDEB 9D0A3993 893D4C60 D99F6F7E 0E5F84F4 D87372DC 6011338D F6788977 9EF1E41F 2D6E70B5 9AEADA44 56066363 65F2D93C 2EF9E168 7D596DA0 EB78D4F6 8C041E79 5E2D71D1 D9D5E1DA 73681611 DFECEF72 ED1B1BF9 5CFA3DA7 E5E37BE1 61F16DB5 ADD81DA3 66E004CC C49DFD61 6DF1A9D0 58D0807C 06910401 E2E816AA B8D22F8B 81116BB1 E4C289C0 B59878E5 6C5AD1F9 2CA7A59C 9110BA97 F4EE6669 13774FB6 CDFE5EB4 409E4C82 863167D1 707C16EB E5B561C5 4354921C A02253D2 6EF609C2 02AB1B58 21D06EA0 C0820C43 B3806A65 76BD65DD 06122EFD 86907037 0C34A6E6 93B8277F A762D8AE 47B5EFD0 72F1E46D 3176D46F 66B25E0C 70299B40 2E10BC06 CB50C654 4D228D03 CE42627D E20913B5 F470EC6B 86F12877 42FB31FF EFB81696 797E8804 DC858B73 B2467B5A 0A5566E0 5E099DB3 E12120DC EA685D5A 2B5E0AD4 D4DDCBAD 17245B8E E1B9E939 9F4311D8 C194C87E C867D30F 6ACA073D E060D911 06CC2C17 15192963 51CA60DA 0FA11591 6D15083C 00E747C5 EEA00F36 65E8667A 85F3E503 70B8073B 32994B4A 73A5787B D9285E10 72EF92F2 876B2796 3B70520A 95AB28AD 1C84D8BF 5746CA46 24F49059 68C68847 D5093215 63708FB6 E5B23831 42A67566 BB936002 88318030 433522E4 6F4C9720 31FE5804 1D62958E 566A8E9C 7C8C5168 C5C457B9 8ECD9D20 44E7FE7C 3ECFFCBD 180E8C09 8CEFB0E6 EB6B64AD D8F0FCA6 D0F67EFA D09A02BC 739BD491 99C24556 0FDEFB24 09CC00FE 9E6C04B6 4997C30E 2350E182 52318E6F 4502F7EE 03D42FB9 73D24741 D665E6DB 3062C1D6 0866C9E1 3AF44251 BE87F733 F6CFFDB9 8C4781D1 736875DF 610F5E90 42143480 43AC5B2B 31DC974A 18C0E999 2F4EE784 625454F2 A0372CCA BE1B32B8 B3887C60 363D8B8C E26C1FBB A3D921DE 7A078A3E E543638B EFA17710 CE34D9FA 3E3FD32A 2BC73032 B502CA1E ACFB66A5 514C5B04 4170C234 D8A08ED3 737FC441 93153064 AC8B0F25 D1F9712C A3A4931E DF9127F6 99078E3C 0006C89A 7548869D 506A7AC6 1A6ACA52 CB621F5A 39EB5BD9 29CC6E0E A7143288 6EB1E9E6 59644FB6 49DE6CBD FBF6D562 DB493590 09F8CDEC D5DC9A58 ABFD9E83 B91BD326 8623F6CA F81294BD 922C853C 40D161E9 7ECA3097 99838F55 3E418923 4185647E 0173C9AB 0AB302AD 87904CA3 0713D13E 12DDCD5C 1D26123D 7E5C51CC E86278C3 F853069F 2A6DC112 591DC473 FA3D3C4D 91293BD8 07169F1D 70E45208 644D99BB 6459257A 7215F510 9E5BF97C F13D27C7 1B84123C 8E96CEAE CFD3EC6D DAD5CC1F 52F41784 098BE8DE 8A6860E2 7172250D C61FAEA7 9CFDD503 810D4EA8 81A7F256 49517829 98382CB4 51ED10A3 BEED90AE 6BA985C1 5F420314 31184BA9 28984498 544C6D94 6C3005EA 70CF1CF3 39F97017 5ED657A0 52137EB0 123CA407 095F7BFB C956BC10 99914EE2 7076F1C8 0D8C7F5E DCC08FE7 A352A0E7 87138879 534DE580 E659D351 B01F7F7B EC7C2598 23129444 ADEA706D CCB678A9 64E53C5A 19CB62FF AAB4F07C 434A01DD 842607E5 5D55FE03 5DF7CBEC 450C7752 4A9BC911 E9F43D48 80601607 4B358B22 A4174D8A 7ADFF155 ADBB281A AA6E977F 951A1BB4 2D585EF4 8DB81A9D 140B63C0 BE1F3B31 36283ED2 A9A14183 BB236105 2E8501A9 920F0803 86F08787 AD4377F9 8A358D29 C09B5129 9945023B E3779811 0D2B1F82 F0CA8114 D5234C37 16EB620D 0D699E90 C5B84EC5 F3C5CFF3 1DFE7C4C FB83F971 348FDA9E 5B696174 FC328DBA 79A2ADB6 A074FF6E 1CC8B751 B6B43B73 F88EFFE2 9EAA794E F69EAC28 935C8A6E B3D7D320 3E328164 2C2E6307 17BF81BF 7C9F2A1D C588DC21 441BE4E0 C7739041 96571DCC F0A20455 2CB89D97 262271E0 185020E0 4FA5C371 D90BF6C6 54F2C87D 7A71DFF2 5EAB533E 4C7BF1BA CB83708D EAD9C956 53D5B130 CEC3F7B5 FDDBEFEF 78921586 D575564F 4EF6EDF1 BFF5BD1C FE3DD9B3 FA56DFE3 75DB7E1E 57FCB8F8 EB7BF8F5 FDF8F9BD 3C3FBF07 A868747D 8A9F3099 7D8206A0 0B60C15C C5C731DD 7EAEF9F8 5B31164A 7B19DBDB B6B4C1B3 914061A9 7FEA7E92 798D5A5E 7ED2E917 B1ED31B0 D4A937C9 B5182E57 C1E90D2A AB3EE48F 99FBA004 DE766C04 ED3C31B4 41A39D11 6E451960 044302EE EB8038E9 D60119D3 89BA94D3 CCCF8D79 1EC75D0F BBEED1EC DA9129E8 F58B988E 0E99EC5A D7C10023 9E27FE9D A8948DEE 44157600 0557A487 7A0756F6 7E0BA67C 7D9FBFBE 0F4F8D0F FEBD6F25 C7BFB75F DFCF5FE7 3BC11E3E F609935C C1F1AB27 2B6FEDF7 5E66EA5D CBB4E0EA F1CBE119 D9D9B5E3 C6083947 C1715DAA 9B929B63 CF66DBB2 AFB3A6B9 22C0D495 A8E0510D 9D7CFAF7 8D0EB4A3 321BA867 4761363A D18ED26C 74A31D8D 596FC0C2 7FF70CEC E6DF9B1F B7D19BBA 5F674767 DE28CC8E DAE49F51 991DA53A F33ECFB7 7EDDE6BF B7FDBC1E B5999E19 9E9B0DC6 F4C15C3B 733CFFCC 20FF9DFE FE6694EF 0C73FF5D 44E95CA0 FBEAF7AD B9514387 F0219BAF 23BAA8A4 1265C578 D8C33B54 053C96CC 4026CAA7 DA5EB108 0D6E2715 35294F1D FA86B8AC 154C2A71 488A68A4 68D89EB6 EB304F9B 4484D4AB DEE924A9 E69084F4 53E05DAC 5BF51BE7 632FA103 59EE0FA3 ECF415B2 2F6AFA02 F31C393F 5807D03F A10ADAEF D1DD7BD8 0EC2CE7D BF74B297 267CDAB9 F58DE09E A753892F D0C406E4 B819E4A7 C937425A 743A2952 660AA0B9 F8983556 E9A582BE C2CC2AD6 49F7E218 76747F7A 1C7BBB36 F5B9CAA3 853B82BC A29B4C26 5A1A2338 856ECFA2 E2FB532A 4E75F1C8 A853ED53 6C9AB607 5DB39D29 03DD9440 EA31A506 B946993E E0E24A58 22F48133 13C6B9E8 D96ADCB2 3A31AEDD 12B862A0 D72142EB 81BACB84 11065138 FE55652E FCDCA056 51B71288 13F64BE7 87DE1519 A71FFA0D FC0444A7 BA64D694 F3D94820 AC2387C9 3E6A072B 5E7253C9 BD592C32 9599A775 5C9141F3 900898C3 1A66BC75 24AA4A4E 9321437A F54FDC32 BB987047 3D7783B5 36E68F4F D65604A7 52025DE1 FB5DC0C4 EB29658E 0372085C E554C616 6B1173D7 6009DEE5 87830043 27B60ACB 1476DEDA 2C562BC5 CC1E7376 3931B2F0 8704A362 20BA26F9 3D488CD0 D44BC96A 470EDFB6 E4842C5F 0E571126 3E453B57 3A848B80 E832555B BC777C3E 9A3BED72 48B345B1 44E592CF E96E56E9 480FF358 CB97A2EA BAD373C1 FE3EB7DE 20A5540A 37AE3524 52BFEA5C 58FB7204 1355B88F DE4144D6 64F6A45D AD45E430 1055C0F5 605D71C5 44198E96 E369CAA0 3C77BAEE 3673A167 334BA532 CD58AC9F 75720EE3 75FC649B D50B7576 95D195CD B719FD3B 537A4D3C CCEAA68A CC954E90 2CC5B3B7 783099B6 655DF3AA A3E9EC15 C68D4A7C 77B07E83 F5CDBC7F 778BC841 F05E59E8 326FCBC4 2D2B43B3 68E9E5B4 CECA4105 C5955506 D3A53226 CA280361 27220C7D 10BF9CE0 2C428D0A FDB4B10B D4714034 87B8A9FF 8F8ADFFB A64A7AAA E5E5185C 869AF54E 074EFEDA 7FEDFDD0 B85BB210 1CF763A6 C7E1A829 5C1DD0AA 68AB3EBA 07C356F4 C8E0B812 ABB9092D 13B87D1F FF84E71E 56FE5647 83F525C8 363C73B8 54BB1CF6 B9C9CE61 549FE7B1 787DDC8D BA79F702 0F1C5AC9 2665FA80 BD261ECF DC409884 D7FE7C10 E541D874 788E4676 8CF31BF3 1EF09638 3F4D2BDA 579080C0 20783E66 9EACC010 0975BBEB 185BC6D1 E4C4B32C 3C0B293C 0FA6EAD9 8AA77710 8B05146C CF13C1AD 7EDF0B2B F4C7BD7A B5B1E038 282C19A2 EBBD933E 1C42D7E8 E21A70F9 2AD3590E 05A24F3A 31BB6462 B6893AC2 D7F10C44 57C5126D B0A39FCB A53A7C80 79CD6883 8B05A4E3 1A785CB8 5EB916E4 C1EF876A 0502E555 CF15D7A4 374A03F0 649765B8 5F382DE8 AF6D2449 531E80C3 52ABB62C 637FCE3E BB0A92AF 941E7958 E446D3FD C16E99B1 2CD679A9 02AB8F4A F3891A2F 4EAA2706 F2B44C09 BA377F44 32CCE9DF C0D2B7D3 6265732A 6C6D15AA FF653940 1677DD9C A1565F91 7B6506C3 476219DC 48BA66D9 991FD837 FA96BD20 08B1BF26 C791A00E 39767854 2A32F437 8CA2D240 8E23740E 8C4527C1 E109FBF4 6810C99C 343370CF C8BC3023 815554E4 90071413 6D57341B 13229429 E7E2B7F6 B91EBFB7 8AAF464B C654518A 64201E8C 300F9D39 85DFE925 B3BCB98A 5FFB293B C002537B 13F7F6E7 7A7C6D97 711D95AA 3328F97F 3D381EB6 63B0FC20 9E51DB45 BBDCE132 B4B9D6DA D2470E42 7B79D3CE BFE52DA8 938587A6 DD26571A CDA6FF6F 26104CEE 2AA052D5 4DEEE809 3D685AD1 CC4ACE16 31DAA14E EE0751CF 331A17DF C7320992 15DD4F7D 7A701F7A D5780E27 017AF10E BD98B279 EAE5834D 22805E48 F2E6F792 FE8B4167 9D4CB9A0 17BAE08D E6AD293E C155C8AD E0D210F0 0F98C052 CD024D05 284E4DFB C34DEF67 9002C62D 54321DC7 6322B996 6C5C2A0A 1E329383 DA01AF4A 61D9B57B E5E881A3 A9C02CCB 389ED0D7 492018BE 2F4E8925 D8FBE65B 9E3BAD67 8628A1A2 D0D34C4D 7345CA60 4E488910 D29EE941 2D7180D3 400C9C54 EFA3BC4D CAC7E26F 502A879B 2739BB52 C67B9251 B33830D0 2740A13C 15F067BA 45E23D9F 1D4AC3AE D4EFA05C 1686C061 55D4C1AA F39B5E58 F172D8EB C4911BB4 DBDBA2D3 9199FA18 9B512E8A A0900AB3 CF02454F A0D1E4A6 CF4D18BF C6B0BB87 7312D3D4 84CDE15A 19D87292 2B932AA5 E49C52C9 E3C2809F 371163A4 C50A14C6 B5DECC27 3C7CC2FD BAD5CF83 6E97A9ED 9CFC0EA2 C45082F5 D001DFB7 63E5F0B8 25EE6EAB 4E7162DA 6FD47209 3615985F 282D717D 67592EE6 D669895A BC38BBE2 D5BA1D37 7B569C79 5CE5B044 433F3EDB F1A9F976 677BFAF5 F2BE9EFF 9EFDF7BE CBC9CD59 F02A66E6 72550578 B4DF8D94 944449F6 7F26D584 5FD9AE7F 1E96BAB0 CBDE21E1 741E8BFB 2CBBD4AE 8F11AA96 C569DBCB 9F3F6C9C 597FDE98 ED3E978B 27BA8DFA 0EF731A9 F0244063 355CB3FC 64217830 C1ABF8A4 A4549F0B 3AAA2620 2B9D4535 177B1268 CF8D602C F219F7D9 1F6278A5 A4E0F125 190C1695 18B51E2E BFE9D35A C9564153 EC3F12EE C16CCB88 7B3E15D7 A9549DED 3A41EA3A ED509052 94874B59 8C303097 E55729B1 8EABE26C 2C890BB6 52B0FFCC DFDF533C 937238EE B30D1539 D8F5B93A 639F11B6 67696797 0D1B5CA1 3CEC79F1 3B587ABB 18D83E0D 72671197 5784886B D2AEE76A 8DE41043 C01150CF 68DCF958 709E13A3 9D54F838 BD3D241F E31F9302 B332EDFC AB44CC3D 98529D16 FFC10CD9 DB62079D 43F1728B 973BD007 F00B7B02 DFF9FB92 DD5F79AF B6985642 5C50AEA0 EACFEDE8 8645C0F2 64399939 09D2CFBF B226DBA5 024F61FA 30B6C5BC A4C1686B 55162407 23CC7B3B 4F327892 066432AB C2B08318 436AE638 10CB179E 017F5B90 67C5EDC9 EDEF9546 9BAFB8EF 791ECF4B B962D596 D179F0FE 9E07A501 C8145DE5 A70DFD6C 2BE7B12C 0A69C7C4 6122C3B8 1422EA85 B9C0D4B0 33CB1870 9D21054A 8A2E031D 7458F059 A1BFE83D B225131E DAFA7BF4 939E44DF EF76F87E 0FD9F9B7 20ABF41E 61DA7B30 A79DEF91 3DEC273B 79D69BF1 ECC0B426 E8588156 889F1FFD 7C12CF7E A6EBC67D 03A12CF5 2CD2A160 C39BFE66 710861A3 C4E76B3E E50FEB52 86A9121B 090461AB C80999FC 819CE228 93062F92 B2F05F1E 67D18F92 F72D1F8A 6C2A1FAA A42208E4 CD18D28F B45B1E17 E5C05081 24CF3B94 2365F850 3F260D6C BDAF0F75 073963AA 223406B8 475346F5 8502D6A0 988A82D6 A2D419E6 EB0E9640 684E8AF5 79169A83 CCFC80FE 3017E56D E6E2AE4C 6881CC64 1E1D0137 98BE51E7 45EF0116 BFC418D6 36895D4E 8324B7A6 7D86647E 8862E3D7 E87E0D73 8E185BB6 3824DEC2 C5D12B76 B6B8C93F C5CE5A5B 2C981878 76CCD31D 0AB9D871 DA41804A 17135BEC EDF8F872 0E105511 66D92904 B6A3CD9D 7D7C99BD 3CE80001 2B6272CB E10EFD2E F61599D2 61329CF4 91094347 C508C358 E8DE2C30 1C7C9583 2E662B4A 08A09D3C A82B64A6 F099FCC6 93806853 7802265D AE43E825 CAD2C84A D293464B 9F435111 FA791DD1 2935792D 61F6D236 A364737F 56D38C4F ABAA5A0C DE1D9651 FA6640EA F743ABE7 81FDD533 39487342 DAFE03C6 AFA7E73E 11C531A9 3AB8339B E24DC391 68679994 07287CAB 5C26BC4D 6211C920 5A6D970B ACDB3253 F61C06B1 DD8BCECF C059A94F 553CD8F3 6426139A 587F9C61 27DB624C 6D79D982 A5396007 C3FA2031 5021F355 4996C9F8 4DF3EDC1 D2C47C9C 5DB14AEA 06412B9F C56F4241 E0B26687 116EE927 B3223856 9909B3F6 8A52EB19 BF6398A6 6A7FC996 ADCFA268 1D173EC7 09C5C10A E46E46F3 280EF142 83FB72B5 F3F6F5AF F4F3FA32 91BFAEC1 3AB4FBD8 E5CA760E 6CC9FF78 4E2E76DF 9BE6470D 43D8B2D3 82DF0A52 33180BBD 9746393D 530652A0 00F2C5E3 088AD40C C96F447A A49A3466 ACB94A9C B053C7C4 CF3143CF 02CAA6A6 8F676586 FB90BD55 590C3698 B743373D 04ED2315 9B9ED554 E32EFF08 5E827DE5 E56EBFE9 5832DE18 213C0BE2 88C1E983 495D727D 452BA123 47B47483 CCC41649 495B77B0 B6476604 9DFB7A15 E824F78F 7BA77957 51026CB1 005B5F6A 14E32C9D 78D8F7D5 C518A615 971F97C5 5994E479 3D92F095 B1CB7E3A 5A2F8E9E 42F20409 D323E929 0BCC569E AD3DB447 3D69576B 095488F9 DC247FEC 6341EEFD 9F8E6D78 C6C9DF86 607B969E 93BF7125 E01EE020 8FD2FFF2 95D6CE4C 0E97AAC5 F01D7A1D CBD19AAD E57C896A 787CBC2F 652BC7C5 5CC5B6D7 3A6D0EAC 17ACC0BD 6F5EB475 8552D01F 97D8722F 9D442150 9805B3D3 61FB3757 F120D830 F69CEE82 E559E8FC F0DFAEAF DF2A9443 28DEE556 A14C66FB 9827FDE5 1A4CBFC7 D8BEDF8D 29F4AB14 E2977980 2B32D717 1799AEE7 828115F6 E731377A 5375CE64 E5EBBC08 5A6D52C6 23A2EB93 8C4A48D8 C9C26C56 205ACA1A B5AD72EC B851306B FD70694A 8715892B B2E42AA4 F5D0AB60 F59B2F7E 995BE2AF 34DF64FF B8575DA9 7C30C894 81D6CD95 311FA553 3028D785 7BD12C41 9616FD8A E7246A85 D0C7C818 3D1D60FB E0DA2ED4 C9929BA0 F5E21056 965CBC93 8605DD78 1D85E0A4 96B813BC 56C05D03 ABD4ABD1 8E95DF1C 77CBA694 137EA031 725B9857 667C84FB 4E75F3E8 54639EE4 5292C929 C9F99E8E 21D838D3 BB83F631 AB9A5E59 42E67FAC E3EBE739 840BF054 EE1FE731 0C60A9DB 1FABFABD AF49B2CB AAF1FB76 FAD1DA4E C6370BE3 502CCAE4 F8332D9D 1ED05C13 4D1B1972 2A77A3EB 5FAE8F33 0616C108 44FEFAF9 AC7CC6CC A4A8711F BC26357A 261183D5 F6C3A43B 7B6685EF EBACA408 81AAA449 94D9B3BD FA86AC3D 4C57AA9E 077A73B2 4E76DFCA A6CFF80D B6AE5958 954BDEAE AA96A160 106F90B7 0BE25E78 D9565FC3 810F9D08 2F83FD75 6353ECFD 09EC8C98 BB2758EB AFDF225E 94AE0E50 DD9FBF15 FB6D275D FEF952D0 06CC9FB6 938BA490 CB61789A 8F2DB88E CAA3EDA5 8F42A60A EB69165F 5681B30E 3584A1E5 93599499 E30CB370 C3FCA96E 0BAFA578 8651B4C2 B654F23C 49D31207 B5FE086C 768B9373 C9FEF577 2F6F1A1E 5B085424 3D57FE4A 9005560D 820733EA 940564D5 7AB65A18 99A32EE6 B187ABB3 44CE2B6B 5794AFE6 A2E9C9CA C6B25E68 954E9256 BA6DD0D2 912B9328 A8503B3E 70F1CD10 4D0E8632 08D6DD3D 918F742A 6864E6E9 EE1C5EB3 F9325359 9999BA1A E533CB20 241DC2DE 0786696B 8CC5FE0C 00374C3C DEF5D36C A136A152 0C4B0684 AA2B265A 94B64A73 CAC474BB 9D5ED9D7 82F1644F 73881C2A E20E435F D734E973 E01B8288 C949C56C 585D459F A9F9E8E2 726D5229 408C75D7 ED4D11FD 153ADAF9 B01142ED B912AF49 0CB7F46B A8417CFD CD56A431 CC41B98D 54D8938C 51974835 7E4A1A80 A673132A 655031D2 104384C1 D83B6BE4 F05C4A7A 33555FAD E48A15FB 3048A5FD 2C1588D1 B3213BA5 5813DA0C 3B39604B 3DF8048F 26456F66 9A31BC15 84C3B203 66CB2F30 1E185283 B267C060 229571F5 33379ECA 17F1B799 DF4BEC74 E6E7CE66 7021CF57 B2B85701 B663179C 0719CF4D 8962D6AB 465ECDD0 E9CC126A A6E1F161 5D07FABC 492810D5 3FA4995F 9B29AE9D 50198F67 17429E83 04D205DE FA1CBB42 8AEB6632 BC739ACD B33DF910 BBB508FB EC135EF2 4E6EDD73 754637AD D060B20F E3EA0CF6 7A6D4C6A 06D5C9AC 686E87DB 29DB8420 65DB8C67 F38607CE 46187830 D627CB7F BD38726C 17213126 4F785760 5605A2BE D083AC7C 9CE4AD23 C42C1659 2FD762B2 C0ADDCDB 4C8F7404 74224505 E561C4ED 2CD62172 1955219B D3EB920A 1E9F8C62 50D7E8B1 0D3B9EE0 CE3C5E29 004A7DC4 73890C61 74D1A19F EC3A849D 9662C863 39E3F8FE 048B51DE 9D8ADA4D 705E5E3B 6905FAF5 27AF9FFD FACC1361 62913835 26E45FDE 67BA48BC ABB04958 D5221FA0 DE9FF525 9EBE2037 19FD8334 5DE81951 46BBDD7F 8FB11535 ABC2ECD4 441781D1 748E8DC4 6821BC91 3DBBD819 C7D203F2 5180F436 6F5203F0 28208171 156AF587 7E88B401 0F6AB338 91CBEDC8 D26CD7CD A4DABCA1 24A11804 55103DDF 713ADAA1 CB4AD958 CF60F8F9 9959EC29 DFEE980D 3608986F 861D2052 035813A1 F1AB2A80 6E551360 E5C3160B B46443A4 25AE6D23 DF4D2C3F 0806994F 1E0ED6C6 6610BF2A B37F15A3 70E943BF E0605DEA E361FCBF 50391D9E 3F62E193 8F5463FE 09347BE2 A9B44949 F82977D8 2BEDF22E 51F10DE6 1AB6C3ED 45B8B72B 940F0550 5D65DE3B C8E9B9FD 2A31779C FEFC3B18 6A09363D EFA255D7 156EAF6D E89EBEBE 415A3821 F3125099 F84E73EA 66447763 6CB97922 711E920A 38599964 94456F3C A8522BCB 500793DA 8C7EAF2E D753A4B0 B2BB0F28 91BD0A28 65A59334 08E9EBF8 F2484078 DCE4221B 66F8BCE8 BB54B935 C3054C79 4F2B855D 4CD87051 FE4EED8C 1404156C 51018A44 E878980D CD4CC653 405CACB8 B9C9AA60 07B1B102 44A3B27C 6AA2C559 BB374328 AD310801 EB5F7CAF 086F311B D6AF3CA6 3D0BD4FC 96F51D74 1E9D842C 784C0C1E DE265C5B 01B30AAA AC2D6652 F058A6E8 FE8B63EB 503BDA72 D5ADC32C A1A619D9 61697583 3CB13AEA 7A99943C 4E873A77 8C19C797 095B6A67 93DA072F CE222DDA 3E6FFD13 4D3AE820 AC19DA6D 217801FA 1EF4DB34 4CBBE55E DD6B396D CA83A886 241F5A94 3BA1C0B6 620217E8 AAD0AFD9 2D6A6134 0165947F 4493C1D3 E2EF1A3B 931E74B5 A657BF0D 8B3516F0 09AAABE9 060DCC00 86218BB2 A8B89AAD 322646B5 63D20A33 FF0C9186 90098437 48C38C28 6D6F6C15 58C8428F 1AC5AE7D 781A6876 2739D386 847AD5E4 2A64C29E 9EB91503 C68E8F5D 53DBEF6B 62BD94A4 B2C6C4F7 D3B5E2CF 77CEBCC6 00D7C529 E5CB710E C1B7A43C 428165B6 4E7157A4 5CA5F8AC D42161DC D1BAC5D2 6785A1EF 0BC94C7B ABEE38DF 3423921B 6372C1EA 9A9B90A4 58785098 DC2277A5 328095B4 D04C4F23 4A6516DE 28E6ECA0 8BA60A27 6FEEA64B 65923D95 52582B7B 5C731F28 DF0155B2 6E22E878 AC8E47BE 5B68ACE4 DA54AC54 1117ACC8 E870073A DDC590D9 456E05F7 5E6DF742 5C3F13B1 B7F2B96B 7467F358 A493F7AE 507B760D EFB26D63 79F09D8B F500E48C 38ACCFDE 926164CE B4679653 03D4E7E6 9F3D7B3F AC1F9FE7 CE3CC7F6 E7674F6F 64C92C3F E7FDD9D3 39C2F3F3 73DC291F 7CB6C7AB B2922CBB 68D76A3B F412ED3E CD2AA4BF 32EEF7BB BC79446D C30DED44 724FDC66 293F5DEE 1E21E867 15424EF5 C881F418 467D7704 21D9EFA7 47022042 BD239547 161C7166 EE00F2E5 5D2A0EAF 313DEBB4 E8B29FBF ECF8B1EC 7808B460 09E67EFF E9A02BFE FC63D876 7A0174AD F6BB0381 551547EF F084FAEB 28F79581 D6200941 264EF74C 20FE1306 15CB2B11 EAA45687 8694A61A 8BA223E0 324F1645 9AE30A4B A61787A4 99E64BA6 F8ECD93C F96FD9E0 65F72688 7E599A70 181AA7C2 3D97128F 71CF229C 89045682 E50716A9 DC282BEA E535CFC7 AEF9A94B 8D424EBE EB078897 BD96BE35 FCF3EBBD 056246CC 60166919 B48FDDD7 6075D263 6DEF7AB3 02E33A93 F277559A D5ECF78A 85D807C1 53D9622E DA317278 F8316A52 6D59F44C 4E1F6463 A110F906 DA7461F9 3FD47CDF 627FE7B6 C4B35FEA 4A6BD817 84F261CA 08D595FD EEEA6FF5 559D0E0B 4995D194 E6CBE790 BE66A601 A5EB2A2C C1A4F7C6 48206481 DB919DF0 4684D4B9 A219E59D 6D6FF800 91A03F27 BBDED034 E792B929 6B684251 569035D1 2B9088F2 769A5024 860B1553 E228D48D D82B696B B9488EC7 F04A5B0B 06A891D6 B5AFF754 F61A3A19 C517E66A B7F451CA 15213533 99EAECD0 CA1355BA 939624FD 220F890F ABFD297C F5C030CD 79ECDE25 EC5A46AD BF75BA62 701C9168 BD6160F4 0037549C B515F0BC 552A2B32 36AB17AA 7FA1B33E 793CF2B1 24F5F391 9AA29823 5413C52F 1FC62969 11DEC29A 7DABAF6B 762FACFB A8E6ACC3 80C42C55 A4255BF9 D363898C 6619FB36 B6DD8BAD 6CC61B77 F29ED9C1 168452BC 8A958221 5A99C563 AEA47978 30BA9D90 504602D1 11C3E322 902DAD81 6DF447EF 2E78FCFD E5616530 2A9E1888 FD4F2F9F 59B281E5 43F8BCEB BE09443E 2920DD6F F63C24C7 48802E2B 35703395 E99B5023 EE934824 229E701A 467BB7AA F0737B94 96258DF5 EA2F97A4 B77AAA29 3870B441 C9368E5C 9D4DC962 E139A460 7B16006F CF71B883 8D83301C 9A6A6F17 555B0280 D19D73D8 B54E8C02 DD64A935 CB1CA028 6CEE9AAF 215C8DA9 B1AE37E7 6AD97FB2 8C7637B8 65AB94D2 8563D5E9 1832BD38 061599D1 25C30512 F5DD8F09 E75B11CF AA1A7BE7 E6683>

idProduct=8699
idVendor=2652

BrcmPatchRAM.kext/Contents/PlugIns/BrcmNonApple.kext/Contents/info.plist

idProduct=8699 (2x)
idVendor=2652 (2x)
USB Product Name=Broadcom Bluetooth 4.0 Controller (BCM94352HMB)
 

Attachments

  • BrcmPatchRAM.kext.zip
    47.5 KB · Views: 671
Thank you for your quick reply sirock!

BCM94352HMB has now been added both in the github source and a new binary release uploaded.
Introduction & testing posts are updated.
 
Good stuff! Since I'm using the same BT device (toshiba on bcm94532z), it was plug and play for me and it works perfect from the limited testing I did with my phone (I don't use BT devices all that much). I'll post a link to this thread in my XPS13 thread so you can get some more testers - I know some of these guys were having issues with the closed source BT firmware uploader.

Are there any functional differences between the different versions of the FW in the repo?
 
Introduction

A number of Broadcom Bluetooth USB devices do not have a persistent firmware.
These devices are only upgradable temporarily, called PatchRAM.

Everytime the computer reboots or resumes from sleep, the firmware in the USB stick will either be empty or running an old version.

In order to use these Bluetooth USB's with OS X, firmware needs to be uploaded each time OS X boots.

This functionality is already carried out by the Broadcom Windows drivers and is also available in most Linux flavours.

BrcmPatchRAM

BrcmPatchRAM is a kext driver which allows uploading bluetooth firmware into Broadcom USB devices on OS X.

It uses the vendor specific HCI commands as used in the *nix sample program supplied by Broadcom:
https://code.google.com/p/broadcom-bluetooth/source/browse/brcm_patchram_plus_usb.c

The kext allows to configure any Broadcom USB device in the IOKitPersonalities section of Info.plist.
Also it works when injected using Clover kext injection.

Firmware

Firmwares can be obtained from the Windows driver package, a recent of which can be found here:
http://drivers.softpedia.com/get/BL...etooth-Driver-6515800-12009860.shtml#download

In order to obtain the firmware for your device take the following steps:


  • Obtain the vendor ID and product ID of your bluetooth USB device.
    This can be found in "About this Mac" -> "System Report" -> "Bluetooth".

    For this example we will use my Bluetooth device, a Toshiba Bluetooth USB which is part of the BCM94352Z PCI NGFF WiFi/BT combo card.

    The vendor ID of this device is 0x930, product ID is 0x223.

  • Extract the Windows Bluetooth driver package and open the bcbtums-win8x64-brcm.inf file inside the Windows driver directory.

  • Find your vendor / product combination inside the .inf file:
    Code:
    %BRCM20702.DeviceDesc%=BlueRAMUSB0223,          USB\VID_0930&PID_0223       ; 20702A1 Toshiba 4352

  • Locate the mentioned "RAMUSB0223" device in the .inf file:
    Code:
    ;;;;;;;;;;;;;RAMUSB0223;;;;;;;;;;;;;;;;;
    [RAMUSB0223.CopyList]
    bcbtums.sys
    btwampfl.sys
    BCM20702A1_001.002.014.1443.1457.hex

  • Copy the firmware hex file matching your device from the Windows package.
  • The firmware file can now optionally be compressed using the included zlib.pl script:
    Code:
    zlib.pl deflate BCM20702A1_001.002.014.1443.1457.hex > BCM20702A1_001.002.014.1443.1457.zhx
  • After this a hex dump can be created for pasting into a plist editor:
    Code:
    xxd -ps BCM20702A1_001.002.014.1443.1457.zhx > BCM20702A1_001.002.014.1443.1457.dmp

Download

BrcmPatchRAM can be downloaded from here: https://github.com/robvanoostenrijk/BrcmPatchRAM/releases

Source code is available here:
https://github.com/robvanoostenrijk/BrcmPatchRAM

Changes

v0.1a:
  • Added support for BCM94352HMB (05AC:21FB), credits sirock
  • Updated default BCM94352Z (0930:0223) firmware to v5747

v0.1:
  • Initial version supporting BCM94352Z (0930:0223)

Looks like that research about uploading native firmware into BT chipset's paid off! :thumbup: Nice job!
 
Changes

v0.1a:
  • Added support for BCM94352HMB (05AC:21FB), credits sirock

  • First post. Error in vendorID:
    Correct: BCM94352HMB (0A5C:21FB)



    Test Results

    [*]BCM94352HMB (HP Supra 4352 20702A1 combo [05AC:21FB])
    Credits: sirock
    Senond post. Error in vendorID:
    Correct: BCM94352HMB (0A5C:21FB)
 
BCM94352HMB (AzureWave) - works

Ven: 0x13D3
Dev: 0x3411
Chipset: 20702A3
Firmware Version: v14 c5546

Good tests with:
Apple Magic Mouse.

In attach apdated kext...
 

Attachments

  • BrcmPatchRAM.kext.zip
    112.9 KB · Views: 576
Status
Not open for further replies.
Back
Top