Skip to content

Commit

Permalink
bcm6715b0: adding chip and firmware version 17.10.188.6401 (r808804) …
Browse files Browse the repository at this point in the history
…taken from Asus RT-AX86U Pro. The firmware file is Hybrid, meaning it contains two firmware blobs: one that is loaded to the dongle RAM as usual, and a second that is mapped through PCIE Host Memory Extension. The file starts with the magic bytes LFOC. Each embedded firmware image has a 4 byte type 4 byte length header.
jlinktu committed Nov 17, 2023
1 parent 6df64be commit f4f72af
Showing 8 changed files with 1,269 additions and 0 deletions.
2 changes: 2 additions & 0 deletions firmwares/.gitignore
Original file line number Diff line number Diff line change
@@ -12,3 +12,5 @@ rom.bin
clm.bin
d11ucode_*.bin
sr_source_code_*.bin
rtecdc_dongle.bin
rtecdc_pageable.bin
31 changes: 31 additions & 0 deletions firmwares/bcm6715b0/17_10_188_6401_r808804_ax86upro/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
include definitions.mk

all: d11ucodex_btcxmu132_2.bin d11ucode_btcxmu132_2.bin d11ucodex_mu132_2.bin d11ucode_mu132_2.bin $(DONGLE_FW_FILE) $(HOST_FW_FILE)

d11ucodex_btcxmu132_2.bin: $(FW_FILE) definitions.mk
@printf "\033[0;31m EXTRACTING FIRST UCODE\033[0m\n"
$(Q)dd if=$< of=$@ bs=1 skip=$$(($(DONGLE_FW_OFFSET)+$(UCODE0START)-$(DONGLE_RAMSTART))) count=$$(($(UCODE0SIZE))) 2>/dev/null

d11ucode_btcxmu132_2.bin: $(FW_FILE) definitions.mk
@printf "\033[0;31m EXTRACTING SECOND UCODE\033[0m\n"
$(Q)dd if=$< of=$@ bs=1 skip=$$(($(DONGLE_FW_OFFSET)+$(UCODE1START)-$(DONGLE_RAMSTART))) count=$$(($(UCODE1SIZE))) 2>/dev/null

d11ucodex_mu132_2.bin: $(FW_FILE) definitions.mk
@printf "\033[0;31m EXTRACTING THIRD UCODE\033[0m\n"
$(Q)dd if=$< of=$@ bs=1 skip=$$(($(DONGLE_FW_OFFSET)+$(UCODE2START)-$(DONGLE_RAMSTART))) count=$$(($(UCODE2SIZE))) 2>/dev/null

d11ucode_mu132_2.bin: $(FW_FILE) definitions.mk
@printf "\033[0;31m EXTRACTING FORTH UCODE\033[0m\n"
$(Q)dd if=$< of=$@ bs=1 skip=$$(($(DONGLE_FW_OFFSET)+$(UCODE3START)-$(DONGLE_RAMSTART))) count=$$(($(UCODE3SIZE))) 2>/dev/null

$(DONGLE_FW_FILE): $(FW_FILE) definitions.mk
@printf "\033[0;31m EXTRACTING DONGLE FIRMWARE IMAGE\033[0m\n"
$(Q)dd if=$< of=$@ bs=1 skip=$$(($(DONGLE_FW_OFFSET))) count=$$(($(DONGLE_FW_SIZE))) 2>/dev/null

$(HOST_FW_FILE): $(FW_FILE) definitions.mk
@printf "\033[0;31m EXTRACTING HOST FIRMWARE IMAGE\033[0m\n"
$(Q)dd if=$< of=$@ bs=1 skip=$$(($(HOST_FW_OFFSET))) count=$$(($(HOST_FW_SIZE))) 2>/dev/null

clean:
@printf "\033[0;31m CLEANING\033[0m\n"
$(Q)rm -f d11ucodex_btcxmu132_2.bin d11ucode_btcxmu132_2.bin d11ucodex_mu132_2.bin d11ucode_mu132_2.bin $(DONGLE_FW_FILE) $(HOST_FW_FILE)
61 changes: 61 additions & 0 deletions firmwares/bcm6715b0/17_10_188_6401_r808804_ax86upro/definitions.mk
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
NEXMON_CHIP=CHIP_VER_BCM6715b0
NEXMON_CHIP_NUM=`$(NEXMON_ROOT)/buildtools/scripts/getdefine.sh $(NEXMON_CHIP)`
NEXMON_FW_VERSION=FW_VER_17_10_188_6401_r808804_ax86upro
NEXMON_FW_VERSION_NUM=`$(NEXMON_ROOT)/buildtools/scripts/getdefine.sh $(NEXMON_FW_VERSION)`

NEXMON_ARCH=armv7-a

FW_FILE=rtecdc.bin
DONGLE_FW_OFFSET=0xC
DONGLE_FW_SIZE=0x1AD804
HOST_FW_OFFSET=0x1AD818
HOST_FW_SIZE=0xF6000

DONGLE_FW_FILE=rtecdc_dongle.bin
DONGLE_RAMSTART=0x0
DONGLE_RAMSIZE=0x380000

HOST_FW_FILE=rtecdc_pageable.bin
HOST_RAMSTART=0x800000
HOST_RAMSIZE=0xF6000

# ucodes
UCODE0START=0x12CF6C
UCODE0SIZE=0xC788
UCODE0START_PTR=0x12CF54
UCODE0SIZE_PTR=0x12CF58

UCODE1START=0x1396F4
UCODE1SIZE=0x110E8
UCODE1START_PTR=0x12CF50
UCODE1SIZE_PTR=0x12CF4C

UCODE2START=0x14A7E4
UCODE2SIZE=0xC898
UCODE2START_PTR=0x12CF64
UCODE2SIZE_PTR=0x12CF68

UCODE3START=0x157080
UCODE3SIZE=0x10330
UCODE3START_PTR=0x12CF60
UCODE3SIZE_PTR=0x12CF5C

WLC_BMAC_PROCESS_UCODE_SR_BL_HOOK_ADDR=0x102BBE

WLC_UCODE_WRITE_BL_HOOK_0_ADDR=0x12CEE8
WLC_UCODE_WRITE_BL_HOOK_1_ADDR=0x12CEFC
WLC_UCODEX_WRITE_BL_HOOK_ADDR=0x12CF08

# patch area
RECLAIM_3_END_PTR=0xE1A0
RECLAIM_3_ORIG_END=0x168000

PATCHSIZE=0x1000
PATCHSTART=$$(($(RECLAIM_3_ORIG_END) - $(PATCHSIZE)))

VERSION_PTR_1=0x21064
VERSION_PTR_2=0xE9574
VERSION_PTR_3=0x100120
VERSION_PTR_4=0xE81EC
DATE_PTR=0x21070
TIME_PTR=0x21060
Binary file not shown.
52 changes: 52 additions & 0 deletions firmwares/bcm6715b0/17_10_188_6401_r808804_ax86upro/structs.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
/***************************************************************************
* *
* ########### ########### ########## ########## *
* ############ ############ ############ ############ *
* ## ## ## ## ## ## ## *
* ## ## ## ## ## ## ## *
* ########### #### ###### ## ## ## ## ###### *
* ########### #### # ## ## ## ## # # *
* ## ## ###### ## ## ## ## # # *
* ## ## # ## ## ## ## # # *
* ############ ##### ###### ## ## ## ##### ###### *
* ########### ########### ## ## ## ########## *
* *
* S E C U R E M O B I L E N E T W O R K I N G *
* *
* This file is part of NexMon. *
* *
* Copyright (c) 2016 NexMon Team *
* *
* NexMon is free software: you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation, either version 3 of the License, or *
* (at your option) any later version. *
* *
* NexMon is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with NexMon. If not, see <http://www.gnu.org/licenses/>. *
* *
**************************************************************************/

#ifndef STRUCTS_H
#define STRUCTS_H

/* band types */
#define WLC_BAND_AUTO 0 /* auto-select */
#define WLC_BAND_5G 1 /* 5 Ghz */
#define WLC_BAND_2G 2 /* 2.4 Ghz */
#define WLC_BAND_ALL 3 /* all bands */

#ifndef PAD
#define _PADLINE(line) pad ## line
#define _XSTR(line) _PADLINE(line)
#define PAD _XSTR(__LINE__)
#endif

#include "../structs.common.h"

#endif /*STRUCTS_H */
11 changes: 11 additions & 0 deletions firmwares/bcm6715b0/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
SUBDIRS = $(dir $(wildcard */definitions.mk))

all: $(SUBDIRS)

$(SUBDIRS): FORCE
ifndef (,$(wildcard $(addprefix $@, Makefile)))
@printf "\033[0;31m EXECUTING MAKE FOR FIRMWARE VERSION\033[0m %s\n" $@
$(Q)make -C $@
endif

FORCE:
1,108 changes: 1,108 additions & 0 deletions firmwares/bcm6715b0/structs.common.h

Large diffs are not rendered by default.

4 changes: 4 additions & 0 deletions patches/include/firmware_version.h
Original file line number Diff line number Diff line change
@@ -56,6 +56,7 @@
#define CHIP_VER_BCM4389c1 108
#define CHIP_VER_BCM43439a0 109
#define CHIP_VER_BCM4398d0 1001
#define CHIP_VER_BCM6715b0 1002

#define FW_VER_ALL 0

@@ -139,4 +140,7 @@
// for CHIP_VER_BCM4398d0
#define FW_VER_24_671_6_9_r1031525 1010

// define CHIP_VER_BCM6715b0
#define FW_VER_17_10_188_6401_r808804_ax86upro 1020

#endif /*FIRMWARE_VERSION_H*/

0 comments on commit f4f72af

Please sign in to comment.