fix(network): LAN LED use end0/eth0 carrier only, decouple from WiFi
hasLanCableCarrier no longer locks first scanned iface (NM/WiFi could change which iface had carrier). Prefer sysfs end0 then eth0 each poll; fallback hasWiredCarrier only if neither exists. Made-with: Cursor
This commit is contained in:
@@ -62,12 +62,12 @@ function hasWiredCarrier() {
|
|||||||
return getWiredIfaceWithCarrier() !== null;
|
return getWiredIfaceWithCarrier() !== null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** LAN 灯:未配 CLAWD_ETH_IFACE 时,首次见 carrier 的有线口会缓存,之后只读该口(拔线即灭) */
|
|
||||||
let _lanMonitoredIface = null;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* LAN 面板灯专用:优先 CLAWD_ETH_IFACE;否则自动锁定首次出现的 getWiredIfaceWithCarrier(),
|
* LAN 面板灯专用:只反映「板载以太网插线」,与 WiFi 无关。
|
||||||
* 之后仅看该口 carrier(避免「任意有线」与其它虚拟口混淆)。多口同时在线时仍以扫描序为准,可用手动 env 覆盖。
|
* - CLAWD_ETH_IFACE:只用该口 carrier
|
||||||
|
* - 否则每次优先读 end0、eth0(RK 等板型固定名),避免用「扫描到的第一个 carrier 口」
|
||||||
|
* (该口会随 WiFi 断开/连接、NM 重排而变化,导致 LAN 灯跟 WiFi 联动)
|
||||||
|
* - 若无 end0/eth0 节点再退回 hasWiredCarrier()
|
||||||
*/
|
*/
|
||||||
function hasLanCableCarrier() {
|
function hasLanCableCarrier() {
|
||||||
const explicit = process.env.CLAWD_ETH_IFACE;
|
const explicit = process.env.CLAWD_ETH_IFACE;
|
||||||
@@ -79,19 +79,14 @@ function hasLanCableCarrier() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_lanMonitoredIface) {
|
for (const n of ['end0', 'eth0']) {
|
||||||
try {
|
try {
|
||||||
return fs.readFileSync(`/sys/class/net/${_lanMonitoredIface}/carrier`, 'utf8').trim() === '1';
|
if (!fs.existsSync(`/sys/class/net/${n}`)) continue;
|
||||||
} catch (_) {
|
return fs.readFileSync(`/sys/class/net/${n}/carrier`, 'utf8').trim() === '1';
|
||||||
_lanMonitoredIface = null;
|
} catch (_) {}
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const wired = getWiredIfaceWithCarrier();
|
return hasWiredCarrier();
|
||||||
if (!wired) return false;
|
|
||||||
_lanMonitoredIface = wired;
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function _tryPingInternet() {
|
function _tryPingInternet() {
|
||||||
|
|||||||
Reference in New Issue
Block a user