Skip to content

[JIRA-SONIC-14250] Add AS9647-32D platform device files #720

Open
viclin-ec wants to merge 33 commits into
edge-core:202311.Xfrom
viclin-ec:202311.X
Open

[JIRA-SONIC-14250] Add AS9647-32D platform device files #720
viclin-ec wants to merge 33 commits into
edge-core:202311.Xfrom
viclin-ec:202311.X

Conversation

@viclin-ec
Copy link
Copy Markdown
Contributor

Why I did it

 Add as9647-32d platform devices files
Work item tracking
  • Microsoft ADO (number only):

How I did it

How to verify it

Which release branch to backport (provide reason below if selected)

  • 201811
  • 201911
  • 202006
  • 202012
  • 202106
  • 202111
  • 202205
  • 202211
  • 202305

Tested branch (Please provide the tested image version)

Description for the changelog

Link to config_db schema for YANG module changes

A picture of a cute animal (not mandatory but encouraged)

MichaelZaidman and others added 30 commits May 25, 2026 01:44
- Copied ES9618XX platform files to create the AS9647-32D placeholder.
- Renamed file prefixes to "as9647-32d" to clearly distinguish future
  AS9647-32D–specific modifications.

This commit only introduces the base platform structure; functional
adaptations will be added in subsequent commits.

Signed-off-by: Michael Zaidman <michaelz@xsightlabs.com>
- Added initial support for the AS9647-32D platform.
- The platform is based on the X2 ASIC.
- Supports SFP112, SFP56, and SFP28 transceiver modules.

Signed-off-by: Michael Zaidman <michaelz@xsightlabs.com>
Signed-off-by: Michael Zaidman <michaelz@xsightlabs.com>
Removed unused by XDRV keys.

Signed-off-by: Michael Zaidman <michaelz@xsightlabs.com>
XSW-11234 - fix lanes 4_1 and 4_7 by turning rx_inverse to false.

Signed-off-by: Michael Zaidman <michaelz@xsightlabs.com>
Signed-off-by: Michael Zaidman <michaelz@xsightlabs.com>
Signed-off-by: Anton Parkhomenko <aparkhomenko@larch-networks.com>
After switching to multispeed breakout definitions in platform.json,
the Accton-AS9647-32D-Q32x400G configuration now also covers the Q32x100G variant.

Signed-off-by: Michael Zaidman <michaelz@xsightlabs.com>
Signed-off-by: Anton Parkhomenko <aparkhomenko@larch-networks.com>
Originally, the transceivers were turned on by the CPLD
during boot. This behavior was later changed so that the
CPLD defaults to Low Power mode, allowing the transceivers
to be brought up gradually in order to reduce the power
spike at startup.

Signed-off-by: Michael Zaidman <michaelz@xsightlabs.com>
SONiC does not display transceivers for ports 16-32.

The transciver numbers have been fixed in the creation paths for
'/sys/bus/i2c/devices/15-0062/' for 'module_lpmode', 'module_present'
and 'module_reset'.

Signed-off-by: Vadym Sodolevsky <vadyms@xsightlabs.com>
This reverts commit 3f9dd00b09b4e40a1e0d5bc6c08224e74bbb9753.

Signed-off-by: Anton Parkhomenko <aparkhomenko@larch-networks.com>
This reverts commit 0abd281b3ccbac5ec36d72ecc6f8a52872fb7e70.

Signed-off-by: Anton Parkhomenko <aparkhomenko@larch-networks.com>
Xsight's SDK doesn't support run time ports speed changing within a
single IFU.

Currently only static and dymamic port breakouts are supported, but
speed of ports which belong to same IFU must be the same.

So this commits synchronize platform.json with current SDK
implementation

Signed-off-by: Anton Parkhomenko <aparkhomenko@larch-networks.com>
Signed-off-by: Anton Parkhomenko <aparkhomenko@larch-networks.com>
Originally, we used the /opt/xplt/utils/xcvrs tools in our lab for
SI characterization of modules on our Ubuntu-based XsightOS NOS.
When we began working with SONiC, these tools helped fill the gap
caused by limited CMIS and SI configuration support in earlier versions.

Given their reliability across different environments, we extended
their use to the SONiC 202311 release.
This has been a temporary measure, and we’re now aligning with the
community's standard approach moving forward.

Signed-off-by: Michael Zaidman <michaelz@xsightlabs.com>
Align PFC watchdog enabled queues with PFC-enabled queues (3,4)

Signed-off-by: Borys Barkauskas <bbarkauskas@larch-networks.net>
Fix sfp `get_name` API as done in the commit:
"SON-2256: es9618xx: fix sfp get_name API failure"

This fix prevent the followin error for example:
File "/usr/local/lib/python3.9/dist-packages/sonic_platform/sfp.py", line 124, in get_name
sfputil_helper.read_porttab_mappings(self.__get_path_to_port_config_file())
File "/usr/local/lib/python3.9/dist-packages/sonic_platform/sfp.py", line 108, in __get_path_to_port_config_file
platform_json_path = platform_path if self.__is_host() else self.PMON_JSON_PATH
TypeError: __is_host() takes 0 positional arguments but 1 was given

Signed-off-by: Asher Oved <ashero@xsightlabs.com>
Increase fan speed tolerance from 15% to 20% to
accommodate possible fan series–related speed
variations ad done in the commit:
"SON-2097: es9618xx: fix fan not ok indication"

Signed-off-by: Asher Oved <ashero@xsightlabs.com>
Copy support for reading XCVR temperatures via `SfpThermal` class from the following paths:
- `platform/barefoot/sonic-platform-modules-arista/arista/utils/sonic_platform/thermal.py`
- `platform/barefoot/sonic-platform-modules-arista/arista/utils/sonic_platform/sfp.py`

This support abstracts XCVR thermals for automatic reading in `thermalctld`.

Signed-off-by: Asher Oved <ashero@xsightlabs.com>
Update XCVR thermal sensor names and temperature resolution.
Change cache type for threshold readings.

Signed-off-by: Asher Oved <ashero@xsightlabs.com>
Move temperature calculations and overheat detection to `thermal_infos.py`
Add thermal control policies for faulty sensor and critical warning
Replace exceptions with logger messages for consistent execution flow
Prevent duplicate thermal policy exception when reloading configurations
Update sensor names and threshold pairs for all thermal sensors
Update thresholds for `PCB Top Front` and `PCB Bottom Front` sensors to
maintain cooling level index 0 at room temperature (38% RPM fan speed)
Remove `ASIC diode` thermal sensor
Align `sensors` command thresholds with thermal control thresholds
Return 0 for target/configured fan speed if fan is not present or read fails
Rename `get_configured_speed` to `_get_configured_speed` for internal use
Fix duplicate policy exception: `Policy {} already exists`
Remove all logic from `led_control.py` since the system LED is already
handled by the `healthd` daemon
Rename service from `as9647-32d-platform-monitor.service` to
`as9647-32d-platform-init.service` as monitoring is no longer required;
critical thermal overheat action changed to system reboot
Remove unused functions and classes in thermal control modules
Add helper API to determine whether the current NOS is SONIC or another NOS.
Adjust the ASIC thermal warning and critical thresholds
to prevent false power-cycles under normal heavy load.
Under normal heavy load, ASIC temperature readings reach
approximately 90 C, which previously caused false power-cycles.
Set minimum_thermal and maximum_thermal to None. Update them
only in get_minimum_recorded() and get_maximum_recorded() when
get_temperature() returns a valid float.

Signed-off-by: Asher Oved <ashero@xsightlabs.com>
Copy `watchdog.py` from
`platform/barefoot/sonic-platform-modules-arista/arista/utils/sonic_platform/watchdog.py`
into `fan_watchdog.py`, adjusting indentation from 3 to 4 spaces.

Signed-off-by: Asher Oved <ashero@xsightlabs.com>
Adapt watchdog module to the fan CPLD watchdog.
Enable fan watchdog to protect the thermal control main loop.
Remove fan watchdog disable when manually setting fan speed via sysfs.
Reduce thermal control interval to 30 to improve watchdog
responsiveness. This change has also been implemented in
Arista’s Barefoot and Broadcom platforms for interval of 20 seconds.

Signed-off-by: Asher Oved <ashero@xsightlabs.com>
Add fan speed delay to the `platform.json` file to prevent
community tests false failures in fan speed tests when fan
speed transitions between full-scale values.

Signed-off-by: Asher Oved <ashero@xsightlabs.com>
The syslog identifier is configured per process, not per module.
Because of this, when any Python module within a daemon invokes
`syslog.openlog` for the first time, it overrides the syslog
identifier for all subsequent log messages emitted by that daemon.

Previously, `sfp.py` called `syslog.openlog` with `sfp` identifier,
causing all PMON daemons to inherit the `sfp` identifier. As a result,
log messages appeared incorrectly, for example:
`sonic INFO pmon#sfp: Start init LED`
`sonic NOTICE pmon#sfp: Ethernet48: Got SFP inserted event`

The fix removes the explicit syslog identifier configuration from `sfp.py`,
allowing to inherit the correct identifier based on the daemon’s own name.
After the fix, logs appear correctly:
`sonic INFO pmon#ledd: Start init LED`
`sonic NOTICE pmon#xcvrd: Ethernet48: Got SFP inserted event`

Signed-off-by: Asher Oved <ashero@xsightlabs.com>
The sequence `\s` is not a standard Python string escape sequence.
However, it is a standard escape sequence in regular expressions (regex)
to match a whitespace character.

When Python's compiler sees `\s` in a regular string, it doesn't interpret
it as a special character but issues a warning to prompt you to fix the
potential issue before it becomes an error in an upcoming Python release.

It can be fixed by using a raw string literal `r'()`, making the code
future-proof and preventing the warning.

The printed warning is:
DeprecationWarning: invalid escape sequence \s
'(0x[0-9a-fA-F]{2})([\s]+[\S]+[\s]+)([\S]+)', line)

Signed-off-by: Asher Oved <ashero@xsightlabs.com>
…ontrol policy

Integrate XCVR-aware thermal fan control logic from XsightOS commits:
"XSW-12873: accton: integrate XCVR temperatures into thermal fan control policy"
"XSW-12873: accton: move critical overheat fan control from action code to policy JSON"
"XSW-12873: accton: unify chassis and XCVR overheat data APIs"
"XSW-12873: accton: reorder policy actions and fix critical overheat test"

Add XCVR-aware thermal fan control. When any optical module
exceeds its EEPROM-reported warning or critical threshold, fans are
forced to 100% to prevent coherent modules from triggering
self-protection (laser off).

Signed-off-by: Asher Oved <ashero@xsightlabs.com>
Fix QSFP detection for QSFP with CMIS transceivers in
the `show platform temperature` table.
Before the fix, a QSFP module with CMIS was detected as
the default SFP type, after the fix, it is correctly
detected as QSFP.

Signed-off-by: Asher Oved <ashero@xsightlabs.com>
Fix newline errors in led_control.py.
The issue caused the following error log:
"The sonic ERR pmon#ledd[36]: Failed to load ledutil: invalid non-printable character U+200B (led_control.py, line 8)"

Signed-off-by: Asher Oved <ashero@xsightlabs.com>
- Remove chassis_test.py (unused)
- Remove run_interactive_command and pci_get_value from helper.py
- Remove Python 2 compat (sys.version_info) in eeprom.py
- Remove unused __run_command (component.py) and __read_txt_file, __is_host (chassis.py)
- Remove utils.py and fread/fread_str/fread_int, use read_txt_file in watchdog.py

Signed-off-by: Vadym Sodolevsky <vadyms@xsightlabs.com>
Merge 32 x 4-lane ports into 16 x 8-lane ports to match actual hardware
topology, and add full set of breakout modes (2x400G, 4x200G, 8x100G,
1x400G, 2x200G, 4x100G, 8x50G, 2x100G, 8x25G, 8x10G).

(cherry picked from commit 9d5513f67f5fb62aa6f5ade679c90bc54bf70bab)

Signed-off-by: Michael Zaidman <michaelz@xsightlabs.com>
Signed-off-by: Gal Dembinsky <gald@xsightlabs.com>
aparkhomenko-xsight and others added 3 commits May 25, 2026 02:03
device/accton/x86_64-accton_as9647_32d-r0/platform.json file was updated
recently, but hwsku.json also need to be updated with a new breakout
modes

Signed-off-by: Anton Parkhomenko <aparkhomenko@larch-networks.com>
Due to a typo in the start.sh file, the referenced x2_reset.sh
instead of reset_x2.sh prevented X2 chip resetting.

Signed-off-by: Anton Parkhomenko <aparkhomenko@larch-networks.com>
Signed-off-by: Michael Zaidman <michaelz@xsightlabs.com>
…GitHub

Replace internal Nexus repository URLs (http://172.20.4.62:8081)
with public GitHub raw URLs for es9632xq, as9647-32d, and x2evb
XPLT packages, allowing the SONiC build to run without access to
the internal network.

Signed-off-by: Michael Zaidman <michaelz@xsightlabs.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants