dslreports logo
 
    All Forums Hot Topics Gallery
spc
Search similar:


uniqs
205242

upnatom
join:2006-12-30
Mississauga, ON

4 edits

19 recommendations

upnatom

Member

[Internet] Bypassing the HH3K up to 2.5Gbps using a BCM57810S NIC

Click for full size
Click for full size
Click for full size
Click for full size
Click for full size
Click for full size
Click for full size
bxe_8727_war···atch.zip
2,234 bytes
FreeBSD 11.2 BXE kernel module patch
if_bxe.ko.zip
824,532 bytes
pfSense 2.4.x/OPNSense 19.7.x/20.1 amd64 kernel module
CHECKSUM.SHA256.zip
264 bytes
pfSense 2.4.x/OPNSense 19.7.x/20.1 amd64 kernel module sha256
if_bxe_nokia.zip
789,152 bytes
pfSense 2.4.x/OPNSense 19.7.x/20.1 amd64 kernel module for Nokia
QLogic_bootb···5.vi.zip
1,037,795 bytes
VMware ESXI 6.7.x
(QLogic_bootbank_net-bnx2x_2.713.70.v60.8-1OEM.600.0.0.2494585.vib.zip)
 
JOIN OUR DISCORD SERVER FOR SUPPORT GOING FORWARD

ARCHIVED 2020/10/26 - NO UPDATES OR SUPPORT BY OP

USE AT YOUR OWN RISK - I take no responsibility and assume no liability for any of the following content

Thanks to marcm See Profile, jamend See Profile, and file See Profile for being generous enough to purchase various hardware for testing and spurring on the development.

The following should guarantee up to 2.5Gbps throughput to the GPON SFP ONT on confirmed modules.

Don't be shy, share your success story! And get added to the gracious list of testers below

International Forums

Orange France (https://lafibre.info/remplacer-livebox/guide-de-connexion-fibre-directement-sur-un-routeur-voire-meme-en-2gbps):
Wax See Profile

Google Fiber:
Berzerker See Profile

Hong Kong Broadband Network:
TheBlueKing See Profile Anone21f1

Deutsche Telekom (https://www.onlinekosten.de/forum/showthread.php?t=153872):
KernelMaker See Profile

TELUS:
Baud1200 See Profile TechwithShae See Profile wtfuzz See Profile vrath See Profile tywtyw2002 See Profile

Hardware (Any of the following adapters - x8 PCIe):

Dell N20KJ (Recommended replacement fan: Noctua NF-A4x10 FLX ex. A, B, C)
Tested by: marcm See Profile JAMESMTL See Profile Luxman1988 See Profile Viper359 See Profile Ryntanna See Profile tr4q3r See Profile drcroutons See Profile pommedks See Profile Jeff1462001 See Profile sinykk See Profile Hitman247m See Profile Baud1200 See Profile brasi1 See Profile wtfuzz See Profile zadigre See Profile drkrool See Profile hughjass210 See Profile alexstoev See Profile AOD See Profile

Dell Y40PH (Recommended replacement fan: Noctua NF-A4x10 FLX ex. A, B, C)
Tested by: upnatom See Profile fizzik77 See Profile fegauthier See Profile TheBlueKing See Profile mrdindon See Profile

Broadcom BCM957810A1006G
Tested by: upnatom See Profile CoinTos See Profile kefran See Profile shizhengj5 See Profile vkbell See Profile vigor5000 See Profile beemac See Profile xetal See Profile FrAllard See Profile einto See Profile hardmike See Profile TechwithShae See Profile sarah_gg_uwu See Profile HFXLAN See Profile Slither13 See Profile bolmsted5 See Profile xtlee See Profile

QLogic QLE3442-CU
• Untested

HP 530SFP+
Tested by: file See Profile Gone See Profile t90rak See Profile TechwithShae See Profile zinc See Profile khronik See Profile Mar16 See Profile GossamerS See Profile techwitch See Profile alexm See Profile KernelMaker See Profile

HP 530FLR SFP+ (Warning: Non-standard PCIe - DIY HPE FlexibleLOM to PCIe adapter)
Tested by: tywtyw2002 See Profile

Lenovo 94Y5180
• Untested

10Gtek 57810S-10G-2S-X8
Tested by: Berzerker See Profile

H!Fiber BCM-57810-2S
Tested by: hgarca089 See Profile Anone21f1

Silicom PE310G2SPT10-XR-HT / PE310G2SPT10-SR-HT / HITACHI GQ-CN7821-R (Not recommended for Nokia G-010S-A - ie. Harder to mod)
Tested by: upnatom See Profile

Dell 0MT09V
Tested by: zazik8 See Profile

Gigabyte GC-MLBZ1 / NEC NE3304-149
• Untested

FYI. Broadcom (10/40/100 Gb NIC assets only) = Qlogic (2014) = Cavium (2016) = Marvell (2018)

GPON SFP ONT [Intel® FALC™ ONT GPONSFP PEF98035 Chipset PEF98035ETV13 S LLC5]:

Huawei MA5671A (Additional Discussion: OpenWRT Forum)
Datasheet: »www.huawei.com/ucmf/grou ··· 5752.pdf
SSH: sshpass -p admin123 ssh root@192.168.1.10 (Modern SSH & legacy algos »www.openssh.com/legacy.html)
Serial TTL: TX Pin 2 RX Pin 7 asc0=0 115,200 N 8 1
minishell Commands:
otop
gtop
dmesg
capture_omci_message
arp
capture_gtop_log
get_gtop_log
passwd
reboot
lanpsg
get_vlanA
get_vlanB
show_version.sh
display_version
display_log
mac_learning
Gtop_Help
LAN_port_out
LAN_port_in
IQM_dump
GTC_dump
GPE_arbiter_dump
Configuration
GEM_port
TMU_dump
TMU_EPT_dump
TMU_SBOT_dump
MERGE_dump
Upstream_flow
GPE_capability
GPE_status
GPE_ipv6_Reduction_hash
GPE_ACL_LANE0
GPE_ACL_LANE2
GPE_VLAN_Start_ID
GPE_US_GEM_port
GPE_DS_MC_IPV6
GPE_FID_assignment
GPE_L4_filter
GPE_short_forward_hash
GPE_short_frd_ipv4_mc
GPE_short_frd_MAC_mc
GPE_extended_VLAN
GPE_VLAN_treatment
GPE_LAN_port_General
GPE_LAN_port_Access_Ctr
GPE_LAN_port_OAM
GPE_bridge_port
GPE_LAN_port
GPE_PCP_decoding
GPE_PCP_encoding
GPE_redirection
GPE_bridge
GPE_Counter
OCTRLG_table_dump
GTC_alarms
GTC_counters
Meter
OCTRLG_dump
ICTRLG_dump
FSQM_dump
EIM_dump
SSB_dump
Status
GPE_info
Alloc_ID
TMU_EQT_dump
TMU_SBIT_dump
TMU_TBST_dump
Bridge_port_counter
Version
FW_perfmeter
GPE_exception
GPE_ipv6_Reduction
GPE_ACL_LANE1
GPE_ACL_LANE3
GPE_DS_GEM_port
GPE_DS_MC_IPV4
GPE_tagging_filter
GPE_FID_hash
GPE_learning_limitation
GPE_short_forwardipv4
GPE_short_forwardMAC
GPE_VLAN
GPE_VLAN_rule
GPE_cop_dump
GPE_LAN_port_VLAN
GPE_LAN_port_Trf_Mgmt
GPE_constants
GPE_PMapper
GPE_policer
GPE_DSCP_decoding
GPE_DSCP_encoding
GPE_activity
GPE_MAC_filter
GPE_ethertype_exception
ICTRLG_table_dump
BWM_trace
FW_detailed_status
FW_status
set
quit
 
  • Disable Dying Gasp: set nDyingGaspEnable disable
    Tested by: upnatom See Profile marcm See Profile JAMESMTL See Profile CoinTos See Profile Luxman1988 See Profile kefran See Profile shizhengj5 See Profile Viper359 See Profile Ryntanna See Profile vkbell See Profile drcroutons See Profile pommedks See Profile sinykk See Profile Hitman247m See Profile FrAllard See Profile dduong See Profile sarah_gg_uwu See Profile drkrool See Profile bolmsted5 See Profile TheBlueKing See Profile Anone21f1 mrdindon See Profile
    Rooting [Self-owned]
    Enable LuCI pages [Self-owned] (Skip ONTUSER access)

    Alcatel-Lucent G-010S-P (OEM: Source Photonics)
    Datasheet: »www.sourcephotonics.com/ ··· TDFO.pdf
    SSH: sshpass -p SUGAR2A041 ssh ONTUSER@192.168.1.10 (Modern SSH & legacy algos »www.openssh.com/legacy.html)
    Serial TTL: TX Pin 2 RX Pin 7 asc0=0 115,200 N 8 1
    Disable Dying Gasp: fw_setenv nDyingGaspEnable 0
    Enable LuCI pages [Self-owned]
    Tested by: upnatom See Profile file See Profile Gone See Profile marcm See Profile fizzik77 See Profile tr4q3r See Profile Mar16 See Profile xtlee See Profile

    Alcatel-Lucent O-010S-P
    • Untested

    Nokia G-010S-A (Troubles w/ linking, Still unresolved! --- Further explaination by rsaxvc6 See Profile --- NIC HACK: short to ground w/ solder example / conductive paint example)
    • Try to request a changeout to a Huawei or Alcatel-Lucent splitter if possible
    SSH: sshpass -p SUGAR2A041 ssh ONTUSER@192.168.1.10 (Modern SSH & legacy algos »www.openssh.com/legacy.html)
    Serial TTL: TX Pin 3 RX Pin 6 asc0=0 115,200 N 8 1
    HTTP: user: adminadmin password: ALC#FGU
    Disable Dying Gasp: uci set gpon.gtc.nDyingGaspEnable='0'; uci commit gpon
    Solder short tested by: fegauthier See Profile jamend See Profile albert134 See Profile Jeff1462001 See Profile xetal See Profile Baud1200 See Profile TechwithShae See Profile einto See Profile zinc See Profile wtfuzz See Profile Slither13 See Profile sylvain613 See Profile rajeshs See Profile hughjass210 See Profile Wax See Profile GossamerS See Profile techwitch See Profile alexm See Profile tywtyw2002 See Profile alexstoev See Profile
    Conductive paint short tested by (Search AliExpress, it's under $3):

    Software:

    • eDiag (Necessary to add 2.5G capability mask)
    • Linux (2.5G SGMII patch available below) or FreeBSD (2.5G SGMII patch available)

    How-to block the SMBus:

    If you're having issues with POST you may need to physically block the SMBus signals due to a non formal standard that has diverged throughout the years. The process is described in the following discussion:

    »Re: [Internet] Bypassing the HH3K up to 2.5Gbps using a BCM57810S NIC

    How-to disable PXE:

    If you're having issues with POST you may need to disable PXE boot. The process is described in the following discussion:

    »Re: Yes, you CAN bypass the HomeHub 3000!!

    How-to enable 2.5G capability via DOS eDiag: (NOTE: Not necessary if you used UEFI eDiag)

    1. Download eDiag from 1 of the following sources:

    B57BCMCD_T7.6.2.3.zip /dos/Diag/NX2_Ev/

    B57BCMCD_T7.6.4.1.zip /dos/Diag/NX2_Ev/

    B57BCMCD_T7.12b.4.1.zip /dos/Diag/NX2_Ev/

    2. Download Rufus from the following source: »rufus.ie/

    3. Create a MS-DOS bootable USB using rufus as explained at »www.howtogeek.com/136987 ··· b-drive/

    4. Copy all the contents where ediag.exe resides, including ediag.exe itself onto a bootable USB

    5. Boot from USB (Read your motherboard manual)

    6. Execute eDiag in engineering mode using the following command:

    ediag.exe -b10eng
     
    

    7. Execute the following commands (Please read and verify beforehand, don't do these commands blindly. Refer to the attached images.):

    device 1
    nvm cfg
    7
    35=70
    36=70
    56=6
    59=6
    save
    exit
     
    

    For context, the mask value of 35/36=70 means 1G, 2.5G, and 10G or 0x10 | 0x20 | 0x40 = 0x70, while 56/59=6 defaults the link speed to 2.5G rather than 10G. I'd recommend to default the link speed only on a single port, ie. the port in which the GPON SFP ONT will be connected to.

    Verify after saving by running nvm cfg again. Repeat for the above steps for device 2, ie. port 2 keeping in mind that you may want to hold off on modifying the default link speed, ie. 56/59=6.

    How-to identify port X via DOS eDiag: (NOTE: Not necessary if you used UEFI eDiag):

    1. Execute steps 1 to 5 from How-to enable 2.5G capability via DOS eDiag (above)

    2. Choose a device ie. port, load the driver, and turn on/off (1/0) the led, eg. turn port 0 (device 1) led on

    device 1
    driver load
    led override 0 TRAFFIC 1
     
    

    How-to enable 2.5G capability via UEFI eDiag (NOTE: Not necessary if you used DOS eDiag):

    1. Download eDiag from 1 of the following sources:

    B57BCMCD_T7.6.2.3.zip /UEFI/uefi_ediag/x64

    B57BCMCD_T7.6.4.1.zip /UEFI/uefi_ediag/x64

    B57BCMCD_T7.12b.4.1.zip /UEFI/uefi_ediag/x64

    CDR-X9_1.31_for_Intel_X9_platform.iso /Broadcom/UEFI/uefi_ediag/x64/

    2. Copy all the contents where the eDiag_x64.efi resides, including eDiag_x64.efi itself onto a bootable media [USB, HDD, etc.]

    3. Boot and launch an EFI shell (Read your motherboard manual)

    4. Change the directory path to your bootable media

    5. Execute eDiag in engineering mode using the following command:

    ediag_x64.efi -b10eng
     
    

    6. Execute the following commands (Please read and verify beforehand, don't do these commands blindly. Refer to the attached images.):

    device 1
    nvm cfg
    7
    35=70
    36=70
    56=6
    59=6
    save
    exit
     
    

    For context: the mask value of 35/36=70 means 1G, 2.5G, and 10G or 0x10 | 0x20 | 0x40 = 0x70; While 56/59=6 defaults the link speed to 2.5G rather than 10G. I'd recommend to default the link speed only on a single port, ie. the port in which the GPON SFP ONT will be connected to.

    Verify after saving by running nvm cfg again. Repeat for the above steps for device 2, ie. port 2 keeping in mind that you may want to hold off on modifying the default link speed, ie. 56/59=6.

    How-to identify port X via UEFI eDiag (NOTE: Not necessary if you used DOS eDiag):

    1. Execute steps 1 to 5 from How-to enable 2.5G capability via UEFI eDiag (above)

    2. Choose a device ie. port, load the driver, and turn on/off (1/0) the led, eg. turn port 0 (device 1) led on

    device 1
    driver load
    led override 0 TRAFFIC 1
     
    

    Don't use 192.168.1.0/24 subnet for your local network!

    Pre-built Kernel Modules (After applying the nvram changes via eDiag how-to):

    FreeBSD/pfSense/OPNsense Installlation (See attachments)
    # PC
    fetch https://www.dslreports.com/r0/download/2438557~f64f10e38577eb4aaf1c98d62ac9cd46/if_bxe.ko.zip
    unzip if_bxe.ko.zip
    shasum -a 256 -c CHECKSUM.SHA256
    # PC -> pfSense
    scp if_bxe.ko root@pfSense.localdomain:/boot/kernel/
    ssh root@pfSense.localdomain
    # PC -> OPNsense
    scp if_bxe.ko rootOPNsense.localdomain:/boot/kernel/
    ssh root@OPNsense.localdomain
    # pfSense/OPNsense/etc
    chmod 555 /boot/kernel/if_bxe.ko
    chflags schg /boot/kernel/if_bxe.ko
    echo 'if_bxe_load="YES"' >> /boot/loader.conf.local
     
    
    Updating
    # pfSense/OPNsense/etc
    chflags noschg /boot/kernel/if_bxe.ko
    # Same procedure as installing
     
    

    FreeBSD 13.1/OPNsense 22.7 by upnatom See Profile (Same instructions above)
    FreeBSD 12.x/pfSense 2.5.x/pfSense 2.6.x/OPNsense 20.7.x/OPNsense 21.x.x by upnatom See Profile (Same instructions above)
    Proxmox by JAMESMTL See Profile (Match with your release version)
    Proxmox 6.3-6 by mrdindon See Profile
    Untangle 14.x/15.x by JAMESMTL See Profile (Match with your kernel version)
    Untangle 15.1 by sasquatch743 See Profile
    Untangle 16.1 by sasquatch743 See Profile
    VyOS by JAMESMTL See Profile (Match with your release version)
    IPFire by JAMESMTL See Profile (Match with your release version)
    VMware ESXi 6.5/6.7 by upnatom See Profile
    VyOS 1.3.0-rc1 by indigo11 See Profile
    VMware ESXi 6.7 by upnatom See Profile (Use driver attached to this post)
    Disable Secure Boot
    Create and pass VLAN 4095 (Trunk/Virtual Guest Tagging)
     
    

    Community Build Guides (NOTE: Not necessary if using pre-built modules. After applying the nvram changes via eDiag how-to):

    Debian Stretch and Buster additions by JAMESMTL See Profile
    Debian Stretch by JAMESMTL See Profile
    Debian Buster by JAMESMTL See Profile
    DKMS by zinc See Profile
    Proxmox by JAMESMTL See Profile
    Proxmox 5.4 or 6 by JAMESMTL See Profile
    Proxmox 5.4, 6.0, 6.2 by JAMESMTL See Profile
    FreeBSD
    pfSense by upnatom See Profile (Download and use patch file from this post. Also keep TSO and LRO offloading disabled and disable CSUM if VM)
    pfSense 2.5 by upnatom See Profile
    Untangle by JAMESMTL See Profile
    Untangle by JAMESMTL See Profile
    VyOS by JAMESMTL See Profile
    VyOS 1.3 by JAMESMTL See Profile
    IPFire by JAMESMTL See Profile
    OPNSense by fegauthier See Profile
    FreeBSD 13.1/OPNsense 22.7 by upnatom See Profile
    OpenWRT by upnatom See Profile (Fix here docs add single quotes around EOF and EOD)

    Community Setup Guides:

    pfSense Bell Aliant IPTV https://www.idscomm.ca/blog/bell-fibe-internet-iptv-with-pfsense

    BNX2X WarpCore 2.5G SGMII Linux kernel patch: [bnx2x_warpcore_2_5g_sgmii.patch] Updated: 2018-12-18

    The following patch is in the process of being submitted upstream. Please be patient with the process, you'll be building your own driver for awhile.

    diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.c
    index 98d4c5a3ff21..86367c0e368f 100644
    --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.c
    +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.c
    @@ -151,6 +151,7 @@ typedef int (*read_sfp_module_eeprom_func_p)(struct bnx2x_phy *phy,
     
     #define SFP_EEPROM_CON_TYPE_ADDR		0x2
     	#define SFP_EEPROM_CON_TYPE_VAL_UNKNOWN	0x0
    +	#define SFP_EEPROM_CON_TYPE_VAL_SC	0x1
     	#define SFP_EEPROM_CON_TYPE_VAL_LC	0x7
     	#define SFP_EEPROM_CON_TYPE_VAL_COPPER	0x21
     	#define SFP_EEPROM_CON_TYPE_VAL_RJ45	0x22
    @@ -4210,6 +4211,16 @@ static void bnx2x_warpcore_set_sgmii_speed(struct bnx2x_phy *phy,
     					 0x1000);
     		DP(NETIF_MSG_LINK, "set SGMII AUTONEG\n");
     	} else {
    +		/* Note that 2.5G works only when used with 1G advertisment */
    +		if (fiber_mode && (phy->req_line_speed == SPEED_2500) &&
    +		    (phy->speed_cap_mask &
    +		     (PORT_HW_CFG_SPEED_CAPABILITY_D0_1G |
    +		      PORT_HW_CFG_SPEED_CAPABILITY_D0_2_5G))) {
    +			bnx2x_cl45_write(bp, phy, MDIO_WC_DEVAD,
    +					 MDIO_WC_REG_SERDESDIGITAL_MISC1,
    +					 0x6010);
    +		}
    +
     		bnx2x_cl45_read(bp, phy, MDIO_WC_DEVAD,
     				MDIO_WC_REG_COMBO_IEEE0_MIICTRL, &val16);
     		val16 &= 0xcebf;
    @@ -4220,6 +4231,7 @@ static void bnx2x_warpcore_set_sgmii_speed(struct bnx2x_phy *phy,
     			val16 |= 0x2000;
     			break;
     		case SPEED_1000:
    +		case SPEED_2500:
     			val16 |= 0x0040;
     			break;
     		default:
    @@ -8173,6 +8185,7 @@ static int bnx2x_get_edc_mode(struct bnx2x_phy *phy,
     		break;
     	}
     	case SFP_EEPROM_CON_TYPE_VAL_UNKNOWN:
    +	case SFP_EEPROM_CON_TYPE_VAL_SC:
     	case SFP_EEPROM_CON_TYPE_VAL_LC:
     	case SFP_EEPROM_CON_TYPE_VAL_RJ45:
     		check_limiting_mode = 1;
    @@ -8183,7 +8196,8 @@ static int bnx2x_get_edc_mode(struct bnx2x_phy *phy,
     		    (val[SFP_EEPROM_1G_COMP_CODE_ADDR] != 0)) {
     			DP(NETIF_MSG_LINK, "1G SFP module detected\n");
     			phy->media_type = ETH_PHY_SFP_1G_FIBER;
    -			if (phy->req_line_speed != SPEED_1000) {
    +			if ((phy->req_line_speed != SPEED_1000) &&
    +			    (phy->req_line_speed != SPEED_2500)) {
     				u8 gport = params->port;
     				phy->req_line_speed = SPEED_1000;
     				if (!CHIP_IS_E1x(bp)) {
    @@ -11734,6 +11748,7 @@ static const struct bnx2x_phy phy_warpcore = {
     			   SUPPORTED_100baseT_Full |
     			   SUPPORTED_1000baseT_Full |
     			   SUPPORTED_1000baseKX_Full |
    +			   SUPPORTED_2500baseX_Full |
     			   SUPPORTED_10000baseT_Full |
     			   SUPPORTED_10000baseKR_Full |
     			   SUPPORTED_20000baseKR2_Full |
    @@ -12267,6 +12282,7 @@ static int bnx2x_populate_int_phy(struct bnx2x *bp, u32 shmem_base, u8 port,
     			break;
     		case PORT_HW_CFG_NET_SERDES_IF_SFI:
     			phy->supported &= (SUPPORTED_1000baseT_Full |
    +					   SUPPORTED_2500baseX_Full |
     					   SUPPORTED_10000baseT_Full |
     					   SUPPORTED_FIBRE |
     					   SUPPORTED_Pause |
     
    

    How-to patch and build the BNX2X kernel module on Debian:

    The reason Debian was chosen is because it's the base of the most popular Linux based router and firewall solutions, ie. VyOS and Untangle.

    1. Download patch above

    2. Add non-free to /etc/apt/sources.list explained at »wiki.debian.org/SourcesList and required for the bnx2x firmware

    3. Execute the following commands:


    apt update
    apt install firmware-bnx2x
    apt install build-essential libncurses5-dev bison flex
    apt install linux-headers-$(uname -r)
    apt-get source linux-image-$(uname -r)
    cd linux-$(uname -r)
    cp /usr/src/linux-headers-$(uname -r)/.config .
    cp /usr/src/linux-headers-$(uname -r)/Module.symvers .
    patch -p1 < ~/bnx2x_warpcore_2_5g_sgmii.patch
    make modules_prepare
    make M=drivers/net/ethernet/broadcom/bnx2x
    strip --strip-debug drivers/net/ethernet/broadcom/bnx2x/bnx2x.ko
    cp drivers/net/ethernet/broadcom/bnx2x/bnx2x.ko /lib/modules/$(uname -r)/kernel/drivers/net/ethernet/broadcom/bnx2x/
    update-initramfs -u -k all
    reboot
     
    

    How-to check your current interface settings and switch to 2.5Gbps if need be:

    ethtool <ifname>
    ethtool -s <ifname> speed 2500
     
    

    How-to dump your SFP eeprom:

    ethtool -m <ifname>
    ethtool -m <ifname> hex on
     
    

    How-to debug BNX2X:

    1a. modprobe bnx2x debug=0x4102034

    OR

    1b. Add bnx2x.debug=0x4102034 to your kernel command line

    vi /etc/default/grub
     
    

    GRUB_CMDLINE_LINUX="bnx2x.debug=0x4102034"

    update-grub
     
    

    How to verify the interface speed between the NIC and ONU/T:

    Hauwei MA5671A minishell

    lanpsg
     
    

    Alcatel-Lucent G-010S-P / Nokia G-010S-A

    onu lanpsg 0
     
    

    Long Form: lan_port_status_get
    Short Form: lanpsg
     
    Input Parameter
    - uint32_t pport
     
    Output Parameter
    - enum onu_errorcode errorcode
    - uint32_t pport
    - enum lan_mode_interface mode
       LAN_MODE_OFF = 0
       LAN_MODE_GPHY = 1
       LAN_MODE_EPHY = 2
       LAN_MODE_SGMII = 3
       LAN_MODE_SGMII_FAST = 4
       LAN_MODE_RGMII_MAC = 5
       LAN_MODE_RMII_MAC = 6
       LAN_MODE_RMII_PHY = 7
       LAN_MODE_GMII_MAC = 8
       LAN_MODE_GMII_PHY = 9
       LAN_MODE_MII_MAC = 10
       LAN_MODE_MII_PHY = 11
       LAN_MODE_TMII_MAC = 12
       LAN_MODE_TMII_PHY = 13
       LAN_MODE_TBI_SERDES = 14
       LAN_MODE_TBI_AUTODETECT = 15
    - uint32_t enable
    - enum lan_phy_status link_status
       LAN_PHY_STATUS_OFF = 0
       LAN_PHY_STATUS_DOWN = 1
       LAN_PHY_STATUS_10_UP = 2
       LAN_PHY_STATUS_100_UP = 3
       LAN_PHY_STATUS_1000_UP = 4
       LAN_PHY_STATUS_2500_UP = 5
       LAN_PHY_STATUS_NONE = 6
       LAN_PHY_STATUS_UNKNOWN = 255
    - enum lan_mode_duplex phy_duplex
       LAN_PHY_MODE_DUPLEX_AUTO = 0
       LAN_PHY_MODE_DUPLEX_FULL = 1
       LAN_PHY_MODE_DUPLEX_HALF = 2
       LAN_PHY_MODE_DUPLEX_UNKNOWN = 3
     
    

    ARCHIVED 2020/10/26 - NO UPDATES OR SUPPORT BY OP

    The objective is reliability and security for self-hosted services.

    ATTENTION: For those who OWN AND OPERATE THEIR GPON ONU stick.

    The I2C bus SFP MOD-DEF(1) pin 5 and MOD-DEF(2) pin 4 allow for some special commands on chip address 0x51 ie. soft eeprom via sfp_i2c daemon.

    Hauwei MA5671A

    0x79 - Enable/Disable serial console (Doesn't work)
    0xE3 - Set sfp_a2_info environment variable ie. SFF-8472 A2h (Contains Serial Number, MAC Address, LOID Password)
    0xE5 - Reboot (Kills PID 1)
    0xE6 - Change ToD
    0x80 (On Page 0x62) - Enable/Disable VLAN trunking

    Alcatel-Lucent G-010S-P

    0xE3 - Set sfp_a2_info environment variable ie. SFF-8472 A2h (Contains Serial Number, MAC Address, LOID Password)
    0xE5 - Reboot (Kills PID 1)
    0xE6 - Change ToD

    Examples:

    Enable VLAN trunking:

    i2cset -y 0 0x51 0x7F 0x62
    i2cset -y 0 0x51 0x80 1
     
    

    Reboot

    i2cset -y 0 0x51 0xE5 1
     
    

  • Anonfbc92
    @65.92.60.x

    Anonfbc92

    Anon

    Re: [Internet] Bypassing the HH3K at 1.5Gbps+ using a BCM57810S NIC

    Technical this NIC is compatible ?

    Anone0c2b
    @65.92.60.x

    1 recommendation

    Anone0c2b

    Anon

    All Broadcom BCM57810S based is compatible ?
    marcm
    join:2018-05-03
    York, ON

    1 recommendation

    marcm

    Member

    said by Anone0c2b :

    All Broadcom BCM57810S based is compatible ?

    It should, but we only know for sure with the few that we tested with. It's potentially anything that uses the warpcore chipset, but there will never be any guarantee.

    Also, as mentioned in the original post, we only know for sure that it works with the Huawei SFP. Several people have had issues getting the Alcatel/Nokia SFP to work at all, so unless you have the Huawei SFP or don't mind it not working, you may want to hold off on purchasing a card.

    That being said, with the SFP connected directly to eth0 on a BCM57810S (Dell N20KJ):
    # ethtool eth0
    Settings for eth0:
            Supported ports: [ FIBRE ]
            Supported link modes:   1000baseT/Full
                                    2500baseX/Full
            Supported pause frame use: Symmetric Receive-only
            Supports auto-negotiation: No
            Advertised link modes:  2500baseX/Full
            Advertised pause frame use: No
            Advertised auto-negotiation: No
            Speed: 2500Mb/s
            Duplex: Full
            Port: FIBRE
            PHYAD: 1
            Transceiver: internal
            Auto-negotiation: off
            Supports Wake-on: g
            Wake-on: d
            Current message level: 0x00000000 (0)
     
            Link detected: yes
     
    # nice -n -20 speedtest-cli
    Retrieving speedtest.net configuration...
    Testing from Bell Canada (xx.xx.xxx.xxx)...
    Retrieving speedtest.net server list...
    Selecting best server based on ping...
    Hosted by Bell Mobility (Toronto, ON) [7.54 km]: 2.866 ms
    Testing download speed................................................................................
    Download: 1441.57 Mbit/s
    Testing upload speed......................................................................................................
    Upload: 854.16 Mbit/s
     
    

    upnatom
    join:2006-12-30
    Mississauga, ON

    1 edit

    upnatom to Anone0c2b

    Member

    to Anone0c2b
    The 3 listed are the ones that were tested and used to develop the patch. They all have the same PCB and have a "BCM957810A1006G" silkscreen, albeit the Dell branded versions populate the additional components needed for the fan such as power, control, etc. There are Chinese adapters that advertise as a BCM57810S, such as the 10Gtek Broadcom BCM57810S, but they have not been verified. If someone is willing to purchase and test, it would be of great assistance.

    I would also add that Windows support will never exist as the source code for the driver is not available. We're using these adapters with open source solutions as we can patch the driver code.

    JAMESMTL
    Premium Member
    join:2014-09-02

    JAMESMTL

    Premium Member

    well done
    PimpChicken
    Bell 3Gbps
    join:2010-02-23
    Outremont, QC

    PimpChicken to upnatom

    Member

    to upnatom
    Good job guys! I guess if I had waited a few weeks I coulda saved myself some money... :P

    upnatom
    join:2006-12-30
    Mississauga, ON

    4 edits

    upnatom

    Member

    said by JAMESMTL:

    well done

    Thanks.
    said by PimpChicken:

    Good job guys! I guess if I had waited a few weeks I coulda saved myself some money... :P

    The patch itself is very simple, but that simplicity only came after a lot of despair. I knew in theory it was possible, but it took far too long to get the right sequence and magic numbers. I was poking registers for weeks because there literally is no documentation, except for the driver itself and some offshoot broadcom open switch repos. I had given up and only took another stab at it this week because I was off. A fresh look and 3 days later we're here

    I love this comment by file See Profile in our group chat
    said by file:

    [Tues Dec 18th 2018 @ 18:27] down the rabbit hole...

    Just moments after I posted I was back on it, and it perfectly sums up the past endeavour. Thurs Nov 22nd 2018 was our previous discussions, just over a month hiatus.

    Sorry, we couldn't figure it out earlier.

    Anon5f420
    @70.52.43.x

    Anon5f420

    Anon

    So logically, ClearOS should be compatible with its driver?
    gaspimp
    join:2015-08-07

    gaspimp to upnatom

    Member

    to upnatom
    Brilliant work guys. I needed a 10G switch eventually so I don’t regret the ES-16-XG, but this certainly reduces the cost barrier for most people!

    upnatom
    join:2006-12-30
    Mississauga, ON

    1 recommendation

    upnatom to Anon5f420

    Member

    to Anon5f420
    said by Anon5f420 :

    So logically, ClearOS should be compatible with its driver?

    Yes. The patch is for Linux and thereby any distro using the Linux kernel. You just need to apply the patch and build the module.

    »www.clearos.com/resource ··· _modules

    I will soon post a patch for FreeBSD's bxe and how-to. Therefore it would apply to pfSense, etc.
    upnatom

    upnatom to gaspimp

    Member

    to gaspimp
    said by gaspimp:

    Brilliant work guys. I needed a 10G switch eventually so I don’t regret the ES-16-XG, but this certainly reduces the cost barrier for most people!

    The entry cost is also less than a 1G media converter and you get an unused 10G port if you want to link up to a switch. The caveat is that you need to know computing, there will be no hand holding here.
    upnatom

    4 edits

    1 recommendation

    upnatom

    Member

    BXE WarpCore 2.5G SGMII FreeBSD patch: [bxe_warpcore_2_5g_sgmii.patch] Updated: 2018-12-18

    Index: bxe_elink.c
    ===================================================================
    --- bxe_elink.c (revision 342398)
    +++ bxe_elink.c (working copy)
    @@ -884,6 +884,7 @@
     
     #define ELINK_SFP_EEPROM_CON_TYPE_ADDR         0x2
            #define ELINK_SFP_EEPROM_CON_TYPE_VAL_UNKNOWN   0x0
    +       #define ELINK_SFP_EEPROM_CON_TYPE_VAL_SC        0x1
            #define ELINK_SFP_EEPROM_CON_TYPE_VAL_LC        0x7
            #define ELINK_SFP_EEPROM_CON_TYPE_VAL_COPPER    0x21
            #define ELINK_SFP_EEPROM_CON_TYPE_VAL_RJ45      0x22
    @@ -5044,6 +5045,16 @@
                                             0x1000);
                    ELINK_DEBUG_P0(sc, "set SGMII AUTONEG\n");
            } else {
    +               /* Note that 2.5G works only when used with 1G advertisement */
    +               if (fiber_mode && (phy->req_line_speed == ELINK_SPEED_2500) &&
    +                   (phy->speed_cap_mask &
    +                    (PORT_HW_CFG_SPEED_CAPABILITY_D0_1G |
    +                     PORT_HW_CFG_SPEED_CAPABILITY_D0_2_5G))) {
    +                       elink_cl45_write(sc, phy, MDIO_WC_DEVAD,
    +                                        MDIO_WC_REG_SERDESDIGITAL_MISC1,
    +                                        0x6010);
    +               }
    +
                    elink_cl45_read(sc, phy, MDIO_WC_DEVAD,
                                    MDIO_WC_REG_COMBO_IEEE0_MIICTRL, &val16);
                    val16 &= 0xcebf;
    @@ -5054,6 +5065,7 @@
                            val16 |= 0x2000;
                            break;
                    case ELINK_SPEED_1000:
    +               case ELINK_SPEED_2500:
                            val16 |= 0x0040;
                            break;
                    default:
    @@ -9071,6 +9083,7 @@
                    break;
            }
            case ELINK_SFP_EEPROM_CON_TYPE_VAL_UNKNOWN:
    +       case ELINK_SFP_EEPROM_CON_TYPE_VAL_SC:
            case ELINK_SFP_EEPROM_CON_TYPE_VAL_LC:
            case ELINK_SFP_EEPROM_CON_TYPE_VAL_RJ45:
                    check_limiting_mode = 1;
    @@ -9084,7 +9097,8 @@
                        (val[ELINK_SFP_EEPROM_1G_COMP_CODE_ADDR] != 0)) {
                            ELINK_DEBUG_P0(sc, "1G SFP module detected\n");
                            phy->media_type = ELINK_ETH_PHY_SFP_1G_FIBER;
    -                       if (phy->req_line_speed != ELINK_SPEED_1000) {
    +                       if ((phy->req_line_speed != ELINK_SPEED_1000) &&
    +                           (phy->req_line_speed != ELINK_SPEED_2500)) {
                                    uint8_t gport = params->port;
                                    phy->req_line_speed = ELINK_SPEED_1000;
                                    if (!CHIP_IS_E1x(sc)) {
    @@ -12532,6 +12546,7 @@
                               ELINK_SUPPORTED_100baseT_Full |
                               ELINK_SUPPORTED_1000baseT_Full |
                               ELINK_SUPPORTED_1000baseKX_Full |
    +                          ELINK_SUPPORTED_2500baseX_Full |
                               ELINK_SUPPORTED_10000baseT_Full |
                               ELINK_SUPPORTED_10000baseKR_Full |
                               ELINK_SUPPORTED_20000baseKR2_Full |
    @@ -13069,6 +13084,7 @@
                            break;
                    case PORT_HW_CFG_NET_SERDES_IF_SFI:
                            phy->supported &= (ELINK_SUPPORTED_1000baseT_Full |
    +                                          ELINK_SUPPORTED_2500baseX_Full |
                                               ELINK_SUPPORTED_10000baseT_Full |
                                               ELINK_SUPPORTED_FIBRE |
                                               ELINK_SUPPORTED_Pause |
     
    

    How-to enable 2.5G capability via UEFI eDiag:

    Follow the necessary steps outlined in the first post.

    How-to patch and build the BXE module on FreeBSD:

    cd /usr/src/sys/dev/bxe
    patch < ~/bxe_warpcore_2_5g_sgmii.patch
    cd /usr/src/sys/modules/bxe
    make
    echo 'if_bxe_load="YES"' >> /boot/loader.conf.local
    reboot
     
    

    How-to check your current interface settings, check your media options, and switch to 2.5Gbps if need be:

    ifconfig -v <ifname>
    ifconfig -m <ifname>
    ifconfig <ifname> media 2500baseX mediaopt full-duplex
     
    

    How-to dump your SFP eeprom:

    ifconfig -vvvvvv <ifname>
     
    

    Anon81ed2
    @70.52.43.x

    Anon81ed2

    Anon

    Question, on dois copié/collé le patch dans un fichier text ?

    upnatom
    join:2006-12-30
    Mississauga, ON

    upnatom

    Member

    said by Anon81ed2 :

    Question, on dois copié/collé le patch dans un fichier text ?

    My french is terrible

    copié/collé

    Linux file name: bnx2x_warpcore_2_5g_sgmii.patch

    FreeBSD file name: bxe_warpcore_2_5g_sgmii.patch
    singerie3
    anon are muted
    join:2008-10-12
    Montreal, QC

    singerie3 to upnatom

    Member

    to upnatom
    Thank you very much for all your work !

    upnatom
    join:2006-12-30
    Mississauga, ON

    upnatom

    Member

    FYI I've updated the Linux and FreeBSD patches to the most recent revision.

    JAMESMTL
    Premium Member
    join:2014-09-02

    JAMESMTL

    Premium Member

    I'm going give this a shot in the new year. ordered a dell N20KJ.

    I hope to get this nic running passthru on an esxi box to a ubuntu vm

    thanks for updating the post with the nic fw config. I looked QUICKLY at the ediag docs and noticed there was a linux cli. Am i to assume the core settings are one of the restrictions that require ediag to be run efi shell?

    upnatom
    join:2006-12-30
    Mississauga, ON

    upnatom

    Member

    said by JAMESMTL:

    I'm going give this a shot in the new year. ordered a dell N20KJ.

    I hope to get this nic running passthru on an esxi box to a ubuntu vm

    thanks for updating the post with the nic fw config. I looked QUICKLY at the ediag docs and noticed there was a linux cli. Am i to assume the core settings are one of the restrictions that require ediag to be run efi shell?

    As it is a 1 time operation, we did not want to put in the effort to get the linux version to compile on recent kernels when the efi version just works, but we lazily tried and moved on quickly.

    I used ESXI with passthru to get the shots. It was as simple as plugging in a USB with all the ediag_x64.efi bits, creating a VM with no OS, adding a USB controller, adding the USB device, changing the boot options to EFI, checking Force BIOS setup, booting up, selecting shell, changing the drive/directory fs0: (USB), and running ediag_x64.efi -b10eng.

    JAMESMTL
    Premium Member
    join:2014-09-02

    JAMESMTL

    Premium Member

    that's good to hear. i'll let you know how it goes once the card comes in.

    originally i was going to get another x520 for another pc so the timing of all your work was spot on.

    i still can't believe all the work you put into this. Thanks

    edit: so how warm do these broadcoms run? warmer than intel but cooler than chelsio?
    jamend
    join:2008-03-27
    Montreal, QC

    jamend

    Member

    They run cool but they have an annoying little fan, unlike the x520.

    upnatom
    join:2006-12-30
    Mississauga, ON

    upnatom to JAMESMTL

    Member

    to JAMESMTL
    Are you in Montreal like jamend See Profile? If so, I'm curious to know what SFP module Bell had set you up with.. We're trying to debug issues with jamend See Profile Nokia G-010S-A.. Trying to get my hands on 1 myself, but I can't find any available for purchase online.

    The Broadcom doesn't seem to run too hot, it's passively cooled. I sent my Dell to jamend See Profile, so I can't remember if there was any real difference.

    JAMESMTL
    Premium Member
    join:2014-09-02

    JAMESMTL

    Premium Member

    just off island but within greater montreal. I've got a huawei though
    gobiyoga
    join:2018-07-18
    Scarborough, ON

    gobiyoga to upnatom

    Member

    to upnatom
    Will be ordering a NIC to test this out as well.

    I originally had a Huawei SFP module, then got switched over to an Alcatel module, now I ended up with a Nokia module. I'm assuming the Alcatel and Nokia modules are the same, as they both are able to operate on the same splitter, but they both seem to have different dimensions.

    upnatom
    join:2006-12-30
    Mississauga, ON

    upnatom

    Member

    said by gobiyoga:

    Will be ordering a NIC to test this out as well.

    I originally had a Huawei SFP module, then got switched over to an Alcatel module, now I ended up with a Nokia module. I'm assuming the Alcatel and Nokia modules are the same, as they both are able to operate on the same splitter, but they both seem to have different dimensions.

    I'm still struggling with jamend See Profile and it's good to know that the Nokia is being deployed elsewhere. You'll be doing us a huge benefit by testing. It's hard to diagnose the problem without the hardware in hand but with more eyes looking it may be trivial.
    HKPolice
    join:2002-08-09
    Scarborough, ON

    HKPolice to gobiyoga

    Member

    to gobiyoga
    said by gobiyoga:

    Will be ordering a NIC to test this out as well.

    I originally had a Huawei SFP module, then got switched over to an Alcatel module, now I ended up with a Nokia module. I'm assuming the Alcatel and Nokia modules are the same, as they both are able to operate on the same splitter, but they both seem to have different dimensions.

    I'm curious as to why you were switched over to Alcatel then Nokia, I thought all of GTA was huawei only.

    Anon7aac4
    @69.157.136.x

    Anon7aac4

    Anon

    said by HKPolice:

    said by gobiyoga:

    Will be ordering a NIC to test this out as well.

    I originally had a Huawei SFP module, then got switched over to an Alcatel module, now I ended up with a Nokia module. I'm assuming the Alcatel and Nokia modules are the same, as they both are able to operate on the same splitter, but they both seem to have different dimensions.

    I'm curious as to why you were switched over to Alcatel then Nokia, I thought all of GTA was huawei only.

    Ca rien a voir, j'avais un ONT Alcatel avent d'être switcher sur du Huawei
    sibisties
    join:2012-06-04
    Canada

    sibisties to upnatom

    Member

    to upnatom
    BTW, both Alcatel and Huawei SFPs share the same hardware with minor differences. In fact they're so similar, I've been able to run a Huawei firmware on an Alcatel

    The only diffrence is that the Alcatel has a physical EEPROM chip (24LC16) to store SFP MSA settings (serial number, nominal bit rate, ...). This chip is connected to both the GPON SoC and I2C pins on the SFP connector. This way, settings can be read by the SFP host while the SoC is still booting. On the Huawei one, U-Boot environment variables are used to store MSA settings and an I2C slave driver is loaded on boot to simulate an EEPROM device.
    jamend
    join:2008-03-27
    Montreal, QC

    jamend

    Member

    Click for full size
    Here is the Nokia G-010S-A for comparison, with physical EEPROM. I got it working in a TP-Link MC220L but not on BCM57810S.

    upnatom
    join:2006-12-30
    Mississauga, ON

    4 edits

    upnatom to sibisties

    Member

    to sibisties
    Thanks for clarifying the Alcatel.

    I expected as much since the silkscreen and traces were identical to the Huawei's by the gold fingers from the pictures floating on the net.

    I am aware of the inner workings of the Huawei as I have dissected it.

    As you maybe aware there are a variety of sgmii modes the Falcon can be put into. With the Huawei, it's default mode is auto TBI, which works well with the patch, and any TBI mode shall. Also, with the Huawei, the driver does timeout on hotplug because it relies on the eeprom being accessible during module detection, but since it's a soft implementation, it's not accessible in the allocated time frame. It's not a problem as the driver will link 30-50 seconds afterwards once the module has loaded.

    The Nokia does share the same hardware, but in a different package and PCB layout. It's throwing a TX fault with the driver, so I'm trying to determine what sgmii mode the firmware is setup to use, if it's even using sgmii... It's nothing firmware wouldn't be able to fix, I assume. It's just very difficult without the hardware in hand.

    EDIT: And that has got me thinking more.. since the Nokia has a physical eeprom and succeeds instantaneously on module detect/init it maybe trying to acquire a link much too early on while OpenWRT boots. I've instructed jamend See Profile to add a similar delay as to the timeout the Huawei incurs; he'll owe you his gratitude if it works.