🚀 Sync 2026-11-14 13:29:53

This commit is contained in:
github-actions[bot] committed 2026-11-14 13:29:53 +08:00
1 parent c1af55a587
commit 3b05f5bd67
12 files changed
+280 -170

No files matched your search

+2 -2
View File
@@ -6,13 +6,13 @@ PKG_UPSTREAM_TAG:=v$(PKG_UPSTREAM_VERSION)
PKG_SHORT_SHA:=0455d0d PKG_SHORT_SHA:=0455d0d
PKG_VERSION:=2026.11.12.$(PKG_UPSTREAM_VERSION) PKG_VERSION:=2026.11.12.$(PKG_UPSTREAM_VERSION)
PKG_RELEASE:=30 PKG_RELEASE:=31
PKG_SOURCE:=$(PKG_NAME)-stable-$(PKG_UPSTREAM_TAG)-$(PKG_SHORT_SHA).tar.gz PKG_SOURCE:=$(PKG_NAME)-stable-$(PKG_UPSTREAM_TAG)-$(PKG_SHORT_SHA).tar.gz
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-stable-$(PKG_UPSTREAM_TAG)-$(PKG_SHORT_SHA) PKG_SOURCE_SUBDIR:=$(PKG_NAME)-stable-$(PKG_UPSTREAM_TAG)-$(PKG_SHORT_SHA)
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_SOURCE_SUBDIR) PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_SOURCE_SUBDIR)
PKG_SOURCE_URL:=https://github.com/kenzok8/openwrt-clashoo/releases/download/mihomo-src PKG_SOURCE_URL:=https://github.com/kenzok8/openwrt-clashoo/releases/download/mihomo-src
PKG_SOURCE_VERSION:=6fc13a30bff74e8781714defe9aae70ae50574ed PKG_SOURCE_VERSION:=699f86a8fa8f94912881aa45be209f11ac9a691c
PKG_HASH:=skip PKG_HASH:=skip
PKG_BUILD_VERSION:=$(PKG_UPSTREAM_TAG) PKG_BUILD_VERSION:=$(PKG_UPSTREAM_TAG)
+2 -2
View File
@@ -3,11 +3,11 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=libopenssl-gost PKG_NAME:=libopenssl-gost
PKG_VERSION:=3.0.5 PKG_VERSION:=3.0.5
PKG_RELEASE:=2 PKG_RELEASE:=3
PKG_SOURCE_PROTO:=git PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/gost-engine/engine.git PKG_SOURCE_URL:=https://github.com/gost-engine/engine.git
PKG_SOURCE_VERSION:=af2b7e69e855572202420ffc36bae06ccd70796b PKG_SOURCE_VERSION:=81d161e978130ddb05a2415bfa80167127ed2bc5
PKG_MAINTAINER:= PKG_MAINTAINER:=
PKG_LICENSE:=Apache-2.0 PKG_LICENSE:=Apache-2.0
+2 -2
View File
@@ -1,8 +1,8 @@
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
PKG_NAME:=luci-app-trafficctl PKG_NAME:=luci-app-trafficctl
PKG_VERSION:=1.30.7 PKG_VERSION:=1.30.8
PKG_RELEASE:=34 PKG_RELEASE:=35
PKG_LICENSE:=Apache-2.0 PKG_LICENSE:=Apache-2.0
PKG_MAINTAINER:=Denis Iusupov <yusdyr@gmail.com> PKG_MAINTAINER:=Denis Iusupov <yusdyr@gmail.com>
@@ -1027,6 +1027,64 @@ function buildOverviewPanel(ifaces, ifHistory, speedMap, nameByIp, showOther, on
var PRIVATE_RE = /^(192\.168\.|10\.|172\.(1[6-9]|2[0-9]|3[01])\.)/; var PRIVATE_RE = /^(192\.168\.|10\.|172\.(1[6-9]|2[0-9]|3[01])\.)/;
// ── Reverse DNS for the connection table (#165) ─────────────────────────────
//
// network.rrdns replies once every query has an answer or its timeout has run
// out. AdGuard Home in front of dnsmasq (AGH on :53, dnsmasq moved to :54)
// rate-limits each client to 20 queries a second by default and drops the
// excess without an answer, and the router itself is one such client. The
// view used to send every unresolved destination in one batch and throw the
// reply away if the next device poll (3 s) had started meanwhile, so a device
// with more than 20 destinations waited out the 5 s timeout on every tick and
// never showed a name, and each tick sent the same batch again. Now a tick
// sends at most RDNS_BATCH new lookups, nothing goes out twice while it is in
// flight, and a reply is kept whenever it arrives. A destination with no
// answer is retried after RDNS_RETRY_MS rather than shown as "—" for good.
var RDNS_BATCH = 16;
var RDNS_TIMEOUT = 5000;
var RDNS_RETRY_MS = 60000;
function rdnsState() {
return { names: {}, misses: {}, pending: {} };
}
// The destinations of dsts that need a lookup now, at most RDNS_BATCH.
function rdnsPick(st, dsts, now) {
var out = [];
for (var i = 0; i < dsts.length && out.length < RDNS_BATCH; i++) {
var d = dsts[i];
if (st.names[d] !== undefined || st.pending[d]) continue;
if (st.misses[d] !== undefined && now - st.misses[d] < RDNS_RETRY_MS) continue;
out.push(d);
}
return out;
}
// What a host cell shows: the name, null for "no name", undefined while the
// lookup has not finished.
function rdnsShown(st, d) {
if (st.names[d] !== undefined) return st.names[d];
if (st.misses[d] !== undefined && !st.pending[d]) return null;
return undefined;
}
// lookup(addrs) is a promise of { addr: host }; paint(addr, host or null) is
// called for every address once its answer, or the lack of one, is known.
function rdnsResolve(st, addrs, lookup, paint, clock) {
addrs.forEach(function(d) { st.pending[d] = true; });
function done(replies) {
var now = clock();
addrs.forEach(function(d) {
var host = (replies && typeof(replies[d]) === 'string' && replies[d]) || null;
delete st.pending[d];
if (host) { st.names[d] = host; delete st.misses[d]; }
else st.misses[d] = now;
paint(d, host);
});
}
return Promise.resolve(addrs.length ? lookup(addrs) : {}).then(done, function() { done(null); });
}
// ── Rate-limit targets that are not a single device ───────────────────────── // ── Rate-limit targets that are not a single device ─────────────────────────
// //
// A limit can be placed on a block of addresses ("10.0.20.0/24") or on the // A limit can be placed on a block of addresses ("10.0.20.0/24") or on the
@@ -1824,13 +1882,12 @@ return view.extend({
_deviceTimer: null, _deviceTimer: null,
_pollMode: null, _pollMode: null,
_onPopState: null, _onPopState: null,
_rdnsCache: {}, _rdns: rdnsState(),
_sortCol: 'bytes', _sortCol: 'bytes',
_sortDir: 'desc', _sortDir: 'desc',
_sumCol: 'name', _sumCol: 'name',
_sumDir: 'asc', _sumDir: 'asc',
_hiddenCols: {}, _hiddenCols: {},
_queryGen: 0,
load: function() { load: function() {
// config_get rides along with the leases so the router-wide Poll and // config_get rides along with the leases so the router-wide Poll and
@@ -2158,31 +2215,23 @@ return view.extend({
var statsDiv = E('div', { 'style': 'margin:8px 0', 'class': opts.showStats === false ? 'tc-hidden' : '' }); var statsDiv = E('div', { 'style': 'margin:8px 0', 'class': opts.showStats === false ? 'tc-hidden' : '' });
var connsDiv = E('div', { 'class': opts.showConns === false ? 'tc-hidden' : '' }); var connsDiv = E('div', { 'class': opts.showConns === false ? 'tc-hidden' : '' });
function _rdnsBatch(addrs, gen) { function paintHost(dst, host) {
Array.prototype.forEach.call(
connsDiv.querySelectorAll('[data-dst="'+dst+'"]'),
function(cell) {
if (host) { cell.textContent = host; cell.style.color = ''; }
else { cell.innerHTML = '<span class="tc-c-faint">—</span>'; }
}
);
}
// No generation check: a name is a name whichever poll asked for it,
// and the cells are looked up in the table on screen when it lands.
function _rdnsBatch(addrs) {
if (!addrs.length) return; if (!addrs.length) return;
callNetworkRrdnsLookup(addrs, 5000, addrs.length).then(function(replies) { rdnsResolve(self._rdns, addrs, function(a) {
if (gen !== self._queryGen) return; return callNetworkRrdnsLookup(a, RDNS_TIMEOUT, a.length);
addrs.forEach(function(dst) { }, paintHost, Date.now);
var host = (replies && replies[dst]) || null;
self._rdnsCache[dst] = host;
Array.prototype.forEach.call(
connsDiv.querySelectorAll('[data-dst="'+dst+'"]'),
function(cell) {
if (host) { cell.textContent = host; cell.style.color = ''; }
else { cell.innerHTML = '<span class="tc-c-faint">—</span>'; }
}
);
});
}).catch(function() {
if (gen !== self._queryGen) return;
addrs.forEach(function(dst) {
self._rdnsCache[dst] = null;
Array.prototype.forEach.call(
connsDiv.querySelectorAll('[data-dst="'+dst+'"]'),
function(cell) { cell.innerHTML = '<span class="tc-c-faint">—</span>'; }
);
});
});
} }
// Speed graph popup on spark cell hover // Speed graph popup on spark cell hover
@@ -3136,9 +3185,6 @@ return view.extend({
function runSingle(ip) { function runSingle(ip) {
var o = loadOpts(); var o = loadOpts();
var proto = (o.proto && o.proto !== 'all') ? o.proto : ''; var proto = (o.proto && o.proto !== 'all') ? o.proto : '';
self._queryGen++;
var gen = self._queryGen;
pollStart(); pollStart();
callDevice(ip, proto).then(function(data) { callDevice(ip, proto).then(function(data) {
@@ -3275,25 +3321,16 @@ return view.extend({
data.connections.length + ' ' + _('connections') + '. ' + _('Click header to sort.'))); data.connections.length + ' ' + _('connections') + '. ' + _('Click header to sort.')));
if (o.rdns) { if (o.rdns) {
var seen = {}, uncached = []; var seen = {}, dsts = [];
data.connections.forEach(function(c) { data.connections.forEach(function(c) {
var dst = c.dst || ''; var dst = c.dst || '';
if (!dst || seen[dst] || PRIVATE_RE.test(dst)) return; if (!dst || seen[dst] || PRIVATE_RE.test(dst)) return;
seen[dst] = true; seen[dst] = true;
if (self._rdnsCache[dst] !== undefined) { dsts.push(dst);
var cached = self._rdnsCache[dst]; var shown = rdnsShown(self._rdns, dst);
Array.prototype.forEach.call( if (shown !== undefined) paintHost(dst, shown);
connsDiv.querySelectorAll('[data-dst="'+dst+'"]'),
function(cell) {
if (cached) { cell.textContent = cached; cell.style.color = ''; }
else { cell.innerHTML = '<span class="tc-c-faint">—</span>'; }
}
);
} else {
uncached.push(dst);
}
}); });
_rdnsBatch(uncached, gen); _rdnsBatch(rdnsPick(self._rdns, dsts, Date.now()));
} }
} }
} }
@@ -1248,6 +1248,11 @@ return view.extend({
(proto ? ' (' + String(proto).toUpperCase() + ')' : ''); (proto ? ' (' + String(proto).toUpperCase() + ')' : '');
var warns = renderWarnings(data.info && data.info.config_warnings); var warns = renderWarnings(data.info && data.info.config_warnings);
var modesSid = self.modemSid(data.modem);
/* as the daemon reads it (qmi_backend.uc parse_modes): an empty value
and a uci list apply no mask, so only a non-empty string is pinned */
var cfgModes = modesSid ? uci.get('network', modesSid, 'modes') : null;
var pinnedModes = (typeof cfgModes == 'string' && cfgModes != '') ? cfgModes : null;
/* multi-modem: one tab per live modem; a tab reloads the page with /* multi-modem: one tab per live modem; a tab reloads the page with
?modem=<name> so every tool section below targets that modem */ ?modem=<name> so every tool section below targets that modem */
@@ -1290,10 +1295,21 @@ return view.extend({
(settable && settable.length == 0) (settable && settable.length == 0)
? E('p', {}, E('em', {}, [ s.settable_note || _('This modem\'s bands cannot be changed from here right now.') ])) ? E('p', {}, E('em', {}, [ s.settable_note || _('This modem\'s bands cannot be changed from here right now.') ]))
: '', : '',
row(_('Radio technologies'), E('div', {}, modeBoxes), row(_('Radio technologies'), E('div', {}, modeBoxes), [
can('mode_preference') can('mode_preference')
? _('Which generations the modem may use. Unchecking one stops it being used at all — a modem restricted to 5G will not fall back to LTE where 5G is absent, so leave everything the network offers checked unless you are deliberately pinning a technology.') ? _('Which generations the modem may use. Unchecking one stops it being used at all — a modem restricted to 5G will not fall back to LTE where 5G is absent, so leave everything the network offers checked unless you are deliberately pinning a technology.')
: _('Shown, not set: this modem picks its technologies with its own RAT setting, and a band edit keeps it as it is.')), : _('Shown, not set: this modem picks its technologies with its own RAT setting, and a band edit keeps it as it is.'),
/* A change here goes to the modem only, while a configured
`modes` is applied again at every modem start (wwand
modem_init_qmi step_confnet_apply, modem_mbim sync_modes):
without this note a power cycle silently undid the edit
(evidence: ddimension/wwand#75, 2026-11-13: LTE + NR5G
ticked here, modes 'nr5g' configured, LTE gone after it) */
pinnedModes ? E('div', { 'style': 'margin-top:4px' }, [
E('strong', {}, _('Lasts until the next modem start:')), ' ',
_('this modem\'s settings fix "Radio technology" at "%s", and wwand applies that again whenever the modem starts. To keep a change, make it there.').format(pinnedModes),
]) : '',
]),
orderPicker ? row(_('RAT priority'), orderPicker, orderPicker ? row(_('RAT priority'), orderPicker,
_('The order in which the modem searches the radio technologies, first row first. Only ticked ones are searched: a technology allowed above but unticked here may never be used — a modem with 5G enabled and NR5G missing from this list may never try 5G standalone. Applying a change re-attaches the modem, so its connections drop briefly. Kept in the modem\'s own memory; to have wwand restore it on every start, set "RAT priority" on the modem page.')) : '', _('The order in which the modem searches the radio technologies, first row first. Only ticked ones are searched: a technology allowed above but unticked here may never be used — a modem with 5G enabled and NR5G missing from this list may never try 5G standalone. Applying a change re-attaches the modem, so its connections drop briefly. Kept in the modem\'s own memory; to have wwand restore it on every start, set "RAT priority" on the modem page.')) : '',
can('usage_preference') ? row(_('UE usage'), usageSel, can('usage_preference') ? row(_('UE usage'), usageSel,
+153 -95
View File
@@ -7,7 +7,7 @@ msgid ""
"overwrite it. Pick a different name." "overwrite it. Pick a different name."
msgstr "" msgstr ""
#: htdocs/luci-static/resources/wwand/modemopts.js:575 #: htdocs/luci-static/resources/wwand/modemopts.js:599
msgid "\"%s\" is listed twice" msgid "\"%s\" is listed twice"
msgstr "" msgstr ""
@@ -118,7 +118,7 @@ msgstr ""
msgid "(last attempt)" msgid "(last attempt)"
msgstr "" msgstr ""
#: htdocs/luci-static/resources/wwand/modemopts.js:597 #: htdocs/luci-static/resources/wwand/modemopts.js:621
#: htdocs/luci-static/resources/wwand/simlist.js:232 #: htdocs/luci-static/resources/wwand/simlist.js:232
msgid "(none)" msgid "(none)"
msgstr "" msgstr ""
@@ -188,28 +188,32 @@ msgid "4 — embedded"
msgstr "" msgstr ""
#: htdocs/luci-static/resources/view/wwand/settings.js:914 #: htdocs/luci-static/resources/view/wwand/settings.js:914
#: htdocs/luci-static/resources/wwand/modemopts.js:619 #: htdocs/luci-static/resources/wwand/modemopts.js:643
msgid "5G NR SA cell lock" msgid "5G NR SA cell lock"
msgstr "" msgstr ""
#: htdocs/luci-static/resources/wwand/modemopts.js:562
msgid "5G NR mode"
msgstr ""
#: htdocs/luci-static/resources/view/wwand/status.js:1221 #: htdocs/luci-static/resources/view/wwand/status.js:1221
msgid "5G NR neighbour cells" msgid "5G NR neighbour cells"
msgstr "" msgstr ""
#: htdocs/luci-static/resources/view/wwand/settings.js:1310 #: htdocs/luci-static/resources/view/wwand/settings.js:1326
msgid "" msgid ""
"5G bands for non-standalone operation, where a 5G carrier rides on an LTE " "5G bands for non-standalone operation, where a 5G carrier rides on an LTE "
"anchor. Which of the two lists applies depends on the network: the Status " "anchor. Which of the two lists applies depends on the network: the Status "
"page names the mode the modem is actually in." "page names the mode the modem is actually in."
msgstr "" msgstr ""
#: htdocs/luci-static/resources/view/wwand/settings.js:1308 #: htdocs/luci-static/resources/view/wwand/settings.js:1324
msgid "" msgid ""
"5G bands for standalone operation, where the modem talks 5G only with no LTE " "5G bands for standalone operation, where the modem talks 5G only with no LTE "
"anchor." "anchor."
msgstr "" msgstr ""
#: htdocs/luci-static/resources/view/wwand/settings.js:1306 #: htdocs/luci-static/resources/view/wwand/settings.js:1322
msgid "" msgid ""
"5G bands. This modem has one 5G band list for standalone and non-standalone " "5G bands. This modem has one 5G band list for standalone and non-standalone "
"operation alike." "operation alike."
@@ -333,11 +337,11 @@ msgstr ""
msgid "Aggregation DL datagram size" msgid "Aggregation DL datagram size"
msgstr "" msgstr ""
#: htdocs/luci-static/resources/wwand/modemopts.js:537 #: htdocs/luci-static/resources/wwand/modemopts.js:547
msgid "All" msgid "All"
msgstr "" msgstr ""
#: htdocs/luci-static/resources/wwand/modemopts.js:751 #: htdocs/luci-static/resources/wwand/modemopts.js:775
msgid "All sentences" msgid "All sentences"
msgstr "" msgstr ""
@@ -371,7 +375,7 @@ msgstr ""
msgid "Applied, except the band settings — the modem refused them (%s)." msgid "Applied, except the band settings — the modem refused them (%s)."
msgstr "" msgstr ""
#: htdocs/luci-static/resources/view/wwand/settings.js:1323 #: htdocs/luci-static/resources/view/wwand/settings.js:1339
msgid "Apply" msgid "Apply"
msgstr "" msgstr ""
@@ -426,7 +430,7 @@ msgstr ""
msgid "Authentication type" msgid "Authentication type"
msgstr "" msgstr ""
#: htdocs/luci-static/resources/wwand/modemopts.js:756 #: htdocs/luci-static/resources/wwand/modemopts.js:780
msgid "Auto-correct modem config" msgid "Auto-correct modem config"
msgstr "" msgstr ""
@@ -488,6 +492,10 @@ msgstr ""
msgid "Capabilities" msgid "Capabilities"
msgstr "" msgstr ""
#: htdocs/luci-static/resources/wwand/modemopts.js:529
msgid "Card (IPAe, default)"
msgstr ""
#: htdocs/luci-static/resources/view/wwand/status.js:1144 #: htdocs/luci-static/resources/view/wwand/status.js:1144
msgid "Carrier aggregation" msgid "Carrier aggregation"
msgstr "" msgstr ""
@@ -681,11 +689,11 @@ msgstr ""
msgid "Datapath counters (parent)" msgid "Datapath counters (parent)"
msgstr "" msgstr ""
#: htdocs/luci-static/resources/wwand/modemopts.js:702 #: htdocs/luci-static/resources/wwand/modemopts.js:726
msgid "Dead-bearer poll count" msgid "Dead-bearer poll count"
msgstr "" msgstr ""
#: htdocs/luci-static/resources/wwand/modemopts.js:525 #: htdocs/luci-static/resources/wwand/modemopts.js:535
msgid "" msgid ""
"Default SIM PIN for this modem, entered on each start. Empty = unlocked SIM. " "Default SIM PIN for this modem, entered on each start. Empty = unlocked SIM. "
"Per-card overrides live in the SIMs list." "Per-card overrides live in the SIMs list."
@@ -920,7 +928,7 @@ msgstr ""
msgid "FCC unlock" msgid "FCC unlock"
msgstr "" msgstr ""
#: htdocs/luci-static/resources/wwand/modemopts.js:652 #: htdocs/luci-static/resources/wwand/modemopts.js:676
msgid "" msgid ""
"Failed attempts at which the recovery ladder cycles the radio, resets the " "Failed attempts at which the recovery ladder cycles the radio, resets the "
"modem and pulses the reset line / repowers it, e.g. \"2 6 12\". One or two " "modem and pulses the reset line / repowers it, e.g. \"2 6 12\". One or two "
@@ -943,7 +951,7 @@ msgstr ""
msgid "Firmware" msgid "Firmware"
msgstr "" msgstr ""
#: htdocs/luci-static/resources/view/wwand/settings.js:1394 #: htdocs/luci-static/resources/view/wwand/settings.js:1410
msgid "Firmware protocol mode" msgid "Firmware protocol mode"
msgstr "" msgstr ""
@@ -961,7 +969,7 @@ msgstr ""
msgid "Fix age" msgid "Fix age"
msgstr "" msgstr ""
#: htdocs/luci-static/resources/wwand/modemopts.js:750 #: htdocs/luci-static/resources/wwand/modemopts.js:774
msgid "Fix only (less CPU)" msgid "Fix only (less CPU)"
msgstr "" msgstr ""
@@ -994,11 +1002,11 @@ msgstr ""
msgid "GNSS" msgid "GNSS"
msgstr "" msgstr ""
#: htdocs/luci-static/resources/wwand/modemopts.js:747 #: htdocs/luci-static/resources/wwand/modemopts.js:771
msgid "GNSS NMEA output" msgid "GNSS NMEA output"
msgstr "" msgstr ""
#: htdocs/luci-static/resources/wwand/modemopts.js:730 #: htdocs/luci-static/resources/wwand/modemopts.js:754
msgid "GNSS receiver" msgid "GNSS receiver"
msgstr "" msgstr ""
@@ -1144,7 +1152,7 @@ msgstr ""
msgid "Id" msgid "Id"
msgstr "" msgstr ""
#: htdocs/luci-static/resources/wwand/modemopts.js:666 #: htdocs/luci-static/resources/wwand/modemopts.js:690
msgid "" msgid ""
"If the modem has not answered since boot or since the outage began, pulse " "If the modem has not answered since boot or since the outage began, pulse "
"its reset GPIO once after this many seconds. Only a modem with its own reset " "its reset GPIO once after this many seconds. Only a modem with its own reset "
@@ -1186,7 +1194,7 @@ msgid ""
"anyway?" "anyway?"
msgstr "" msgstr ""
#: htdocs/luci-static/resources/view/wwand/settings.js:1280 #: htdocs/luci-static/resources/view/wwand/settings.js:1285
msgid "Interfaces" msgid "Interfaces"
msgstr "" msgstr ""
@@ -1205,7 +1213,7 @@ msgstr ""
msgid "International Mobile Equipment Identity — the modem hardware serial" msgid "International Mobile Equipment Identity — the modem hardware serial"
msgstr "" msgstr ""
#: htdocs/luci-static/resources/wwand/modemopts.js:558 #: htdocs/luci-static/resources/wwand/modemopts.js:582
msgid "Keep the modem's order" msgid "Keep the modem's order"
msgstr "" msgstr ""
@@ -1225,7 +1233,7 @@ msgstr ""
msgid "LTE" msgid "LTE"
msgstr "" msgstr ""
#: htdocs/luci-static/resources/view/wwand/settings.js:1303 #: htdocs/luci-static/resources/view/wwand/settings.js:1319
msgid "LTE bands" msgid "LTE bands"
msgstr "" msgstr ""
@@ -1234,7 +1242,7 @@ msgid "LTE carriers"
msgstr "" msgstr ""
#: htdocs/luci-static/resources/view/wwand/settings.js:912 #: htdocs/luci-static/resources/view/wwand/settings.js:912
#: htdocs/luci-static/resources/wwand/modemopts.js:608 #: htdocs/luci-static/resources/wwand/modemopts.js:632
msgid "LTE cell lock" msgid "LTE cell lock"
msgstr "" msgstr ""
@@ -1250,6 +1258,10 @@ msgstr ""
msgid "Last error" msgid "Last error"
msgstr "" msgstr ""
#: htdocs/luci-static/resources/view/wwand/settings.js:1309
msgid "Lasts until the next modem start:"
msgstr ""
#: htdocs/luci-static/resources/view/wwand/settings.js:257 #: htdocs/luci-static/resources/view/wwand/settings.js:257
msgid "Later" msgid "Later"
msgstr "" msgstr ""
@@ -1258,24 +1270,25 @@ msgstr ""
msgid "Latitude and longitude as the receiver last reported them." msgid "Latitude and longitude as the receiver last reported them."
msgstr "" msgstr ""
#: htdocs/luci-static/resources/view/wwand/settings.js:1312 #: htdocs/luci-static/resources/view/wwand/settings.js:1328
msgid "" msgid ""
"Leave every band unchecked (and the fallback empty) to let the modem use all " "Leave every band unchecked (and the fallback empty) to let the modem use all "
"supported bands." "supported bands."
msgstr "" msgstr ""
#: htdocs/luci-static/resources/wwand/modemopts.js:178 #: htdocs/luci-static/resources/wwand/modemopts.js:178
#: htdocs/luci-static/resources/wwand/modemopts.js:749 #: htdocs/luci-static/resources/wwand/modemopts.js:564
#: htdocs/luci-static/resources/wwand/modemopts.js:773
msgid "Leave modem setting unchanged" msgid "Leave modem setting unchanged"
msgstr "" msgstr ""
#: htdocs/luci-static/resources/wwand/modemopts.js:757 #: htdocs/luci-static/resources/wwand/modemopts.js:781
msgid "" msgid ""
"Let wwand reprogram mismatched modem-side settings (attach profile, etc.) " "Let wwand reprogram mismatched modem-side settings (attach profile, etc.) "
"when it detects them." "when it detects them."
msgstr "" msgstr ""
#: htdocs/luci-static/resources/wwand/modemopts.js:736 #: htdocs/luci-static/resources/wwand/modemopts.js:760
msgid "" msgid ""
"Let wwand step the system clock from the GNSS time — only while the clock is " "Let wwand step the system clock from the GNSS time — only while the clock is "
"plainly unset, so it never fights the NTP client. Off by default. For " "plainly unset, so it never fights the NTP client. Off by default. For "
@@ -1315,12 +1328,12 @@ msgstr ""
msgid "Lock" msgid "Lock"
msgstr "" msgstr ""
#: htdocs/luci-static/resources/wwand/modemopts.js:609 #: htdocs/luci-static/resources/wwand/modemopts.js:633
msgid "" msgid ""
"Lock to LTE cells, one \"earfcn:pci\" per entry (several = a cell list)." "Lock to LTE cells, one \"earfcn:pci\" per entry (several = a cell list)."
msgstr "" msgstr ""
#: htdocs/luci-static/resources/wwand/modemopts.js:620 #: htdocs/luci-static/resources/wwand/modemopts.js:644
msgid "" msgid ""
"Lock to a 5G SA cell: \"pci:arfcn:scs:band\" — the subcarrier spacing is in " "Lock to a 5G SA cell: \"pci:arfcn:scs:band\" — the subcarrier spacing is in "
"kHz (15, 30, 60 …). The \"Lock this 5G cell\" button fills in 30 as a " "kHz (15, 30, 60 …). The \"Lock this 5G cell\" button fills in 30 as a "
@@ -1348,11 +1361,11 @@ msgstr ""
msgid "MBIM, over the QMI passthrough" msgid "MBIM, over the QMI passthrough"
msgstr "" msgstr ""
#: htdocs/luci-static/resources/wwand/modemopts.js:582 #: htdocs/luci-static/resources/wwand/modemopts.js:606
msgid "MCC" msgid "MCC"
msgstr "" msgstr ""
#: htdocs/luci-static/resources/wwand/modemopts.js:587 #: htdocs/luci-static/resources/wwand/modemopts.js:611
msgid "MNC" msgid "MNC"
msgstr "" msgstr ""
@@ -1419,7 +1432,7 @@ msgstr ""
msgid "Minimum severity" msgid "Minimum severity"
msgstr "" msgstr ""
#: htdocs/luci-static/resources/wwand/modemopts.js:583 #: htdocs/luci-static/resources/wwand/modemopts.js:607
msgid "Mobile Country Code for manual network selection." msgid "Mobile Country Code for manual network selection."
msgstr "" msgstr ""
@@ -1427,7 +1440,7 @@ msgstr ""
msgid "Mobile Modems" msgid "Mobile Modems"
msgstr "" msgstr ""
#: htdocs/luci-static/resources/wwand/modemopts.js:588 #: htdocs/luci-static/resources/wwand/modemopts.js:612
msgid "Mobile Network Code (requires MCC)." msgid "Mobile Network Code (requires MCC)."
msgstr "" msgstr ""
@@ -1475,7 +1488,7 @@ msgstr ""
msgid "Modem currently locked: %s — the live read-back of the lock editor." msgid "Modem currently locked: %s — the live read-back of the lock editor."
msgstr "" msgstr ""
#: htdocs/luci-static/resources/wwand/modemopts.js:536 #: htdocs/luci-static/resources/wwand/modemopts.js:546
msgid "Modem default" msgid "Modem default"
msgstr "" msgstr ""
@@ -1487,7 +1500,7 @@ msgstr ""
msgid "Modem device" msgid "Modem device"
msgstr "" msgstr ""
#: htdocs/luci-static/resources/wwand/modemopts.js:636 #: htdocs/luci-static/resources/wwand/modemopts.js:660
msgid "Modem init delay" msgid "Modem init delay"
msgstr "" msgstr ""
@@ -1523,7 +1536,7 @@ msgid "Modem settings applied."
msgstr "" msgstr ""
#: htdocs/luci-static/resources/view/wwand/modems.js:122 #: htdocs/luci-static/resources/view/wwand/modems.js:122
#: htdocs/luci-static/resources/view/wwand/settings.js:1276 #: htdocs/luci-static/resources/view/wwand/settings.js:1281
#: root/usr/share/luci/menu.d/luci-app-wwand.json:39 #: root/usr/share/luci/menu.d/luci-app-wwand.json:39
msgid "Modems" msgid "Modems"
msgstr "" msgstr ""
@@ -1560,7 +1573,7 @@ msgstr ""
msgid "NCM (AT + ethernet data port)" msgid "NCM (AT + ethernet data port)"
msgstr "" msgstr ""
#: htdocs/luci-static/resources/wwand/modemopts.js:703 #: htdocs/luci-static/resources/wwand/modemopts.js:727
msgid "" msgid ""
"NCM modems only. How many consecutive status polls may list no data context " "NCM modems only. How many consecutive status polls may list no data context "
"— with no received traffic in between — before wwand declares the bearer " "— with no received traffic in between — before wwand declares the bearer "
@@ -1578,18 +1591,26 @@ msgstr ""
msgid "NMEA stream" msgid "NMEA stream"
msgstr "" msgstr ""
#: htdocs/luci-static/resources/view/wwand/settings.js:1309 #: htdocs/luci-static/resources/view/wwand/settings.js:1325
msgid "NR5G NSA bands" msgid "NR5G NSA bands"
msgstr "" msgstr ""
#: htdocs/luci-static/resources/view/wwand/settings.js:1307 #: htdocs/luci-static/resources/view/wwand/settings.js:1323
msgid "NR5G SA bands" msgid "NR5G SA bands"
msgstr "" msgstr ""
#: htdocs/luci-static/resources/view/wwand/settings.js:1305 #: htdocs/luci-static/resources/view/wwand/settings.js:1321
msgid "NR5G bands" msgid "NR5G bands"
msgstr "" msgstr ""
#: htdocs/luci-static/resources/wwand/modemopts.js:565
msgid "NSA and SA"
msgstr ""
#: htdocs/luci-static/resources/wwand/modemopts.js:566
msgid "NSA only"
msgstr ""
#: htdocs/luci-static/resources/view/wwand/settings.js:791 #: htdocs/luci-static/resources/view/wwand/settings.js:791
#: htdocs/luci-static/resources/view/wwand/sims.js:89 #: htdocs/luci-static/resources/view/wwand/sims.js:89
#: htdocs/luci-static/resources/wwand/simlist.js:144 #: htdocs/luci-static/resources/wwand/simlist.js:144
@@ -1754,7 +1775,7 @@ msgstr ""
msgid "On, card detected at low level" msgid "On, card detected at low level"
msgstr "" msgstr ""
#: htdocs/luci-static/resources/wwand/modemopts.js:657 #: htdocs/luci-static/resources/wwand/modemopts.js:681
msgid "One to three whole numbers, rising, e.g. \"2 6 12\"" msgid "One to three whole numbers, rising, e.g. \"2 6 12\""
msgstr "" msgstr ""
@@ -1786,7 +1807,7 @@ msgstr ""
msgid "Optional APN for this card, overriding the interface/default APN." msgid "Optional APN for this card, overriding the interface/default APN."
msgstr "" msgstr ""
#: htdocs/luci-static/resources/wwand/modemopts.js:595 #: htdocs/luci-static/resources/wwand/modemopts.js:619
msgid "" msgid ""
"Optional: a saved PLMN list (config wwand_plmnlist) the daemon restores " "Optional: a saved PLMN list (config wwand_plmnlist) the daemon restores "
"before every radio-on. Edit lists on the modem status page." "before every radio-on. Edit lists on the modem status page."
@@ -1886,7 +1907,7 @@ msgstr ""
msgid "Parent device" msgid "Parent device"
msgstr "" msgstr ""
#: htdocs/luci-static/resources/wwand/modemopts.js:679 #: htdocs/luci-static/resources/wwand/modemopts.js:703
msgid "Park the radio when idle" msgid "Park the radio when idle"
msgstr "" msgstr ""
@@ -1925,7 +1946,7 @@ msgstr ""
msgid "Persist in modem" msgid "Persist in modem"
msgstr "" msgstr ""
#: htdocs/luci-static/resources/wwand/modemopts.js:624 #: htdocs/luci-static/resources/wwand/modemopts.js:648
msgid "Persist lock in modem" msgid "Persist lock in modem"
msgstr "" msgstr ""
@@ -1969,7 +1990,7 @@ msgstr ""
msgid "Preferred-PLMN editor —" msgid "Preferred-PLMN editor —"
msgstr "" msgstr ""
#: htdocs/luci-static/resources/wwand/modemopts.js:594 #: htdocs/luci-static/resources/wwand/modemopts.js:618
#: htdocs/luci-static/resources/wwand/simlist.js:228 #: htdocs/luci-static/resources/wwand/simlist.js:228
msgid "Preferred-PLMN list" msgid "Preferred-PLMN list"
msgstr "" msgstr ""
@@ -2028,11 +2049,11 @@ msgstr ""
msgid "Protocol" msgid "Protocol"
msgstr "" msgstr ""
#: htdocs/luci-static/resources/view/wwand/settings.js:1412 #: htdocs/luci-static/resources/view/wwand/settings.js:1428
msgid "Protocol switch failed: %s." msgid "Protocol switch failed: %s."
msgstr "" msgstr ""
#: htdocs/luci-static/resources/view/wwand/settings.js:1411 #: htdocs/luci-static/resources/view/wwand/settings.js:1427
msgid "Protocol switch to %s issued — the modem resets." msgid "Protocol switch to %s issued — the modem resets."
msgstr "" msgstr ""
@@ -2044,7 +2065,7 @@ msgstr ""
msgid "Provider confirmations (notifications)" msgid "Provider confirmations (notifications)"
msgstr "" msgstr ""
#: htdocs/luci-static/resources/wwand/modemopts.js:680 #: htdocs/luci-static/resources/wwand/modemopts.js:704
msgid "" msgid ""
"Put the modem's radio into low power once no interface on this modem is up — " "Put the modem's radio into low power once no interface on this modem is up — "
"for battery and solar installs, where an idle modem still spends a couple of " "for battery and solar installs, where an idle modem still spends a couple of "
@@ -2065,7 +2086,7 @@ msgstr ""
msgid "QMI Foxconn (SDX55, DW5821e)" msgid "QMI Foxconn (SDX55, DW5821e)"
msgstr "" msgstr ""
#: htdocs/luci-static/resources/wwand/modemopts.js:551 #: htdocs/luci-static/resources/wwand/modemopts.js:575
msgid "" msgid ""
"QMI and MBIM modems: the order in which the modem searches the radio " "QMI and MBIM modems: the order in which the modem searches the radio "
"technologies, most preferred first, e.g. <code>nr5g,lte</code>. wwand writes " "technologies, most preferred first, e.g. <code>nr5g,lte</code>. wwand writes "
@@ -2084,7 +2105,7 @@ msgstr ""
msgid "QRTR node" msgid "QRTR node"
msgstr "" msgstr ""
#: htdocs/luci-static/resources/wwand/modemopts.js:748 #: htdocs/luci-static/resources/wwand/modemopts.js:772
msgid "" msgid ""
"Quectel and ASR modems: which NMEA sentences the receiver streams. Written " "Quectel and ASR modems: which NMEA sentences the receiver streams. Written "
"when wwand starts the receiver; saving a change restarts this modem's bring-" "when wwand starts the receiver; saving a change restarts this modem's bring-"
@@ -2111,8 +2132,8 @@ msgstr ""
msgid "RAT" msgid "RAT"
msgstr "" msgstr ""
#: htdocs/luci-static/resources/view/wwand/settings.js:1297 #: htdocs/luci-static/resources/view/wwand/settings.js:1313
#: htdocs/luci-static/resources/wwand/modemopts.js:550 #: htdocs/luci-static/resources/wwand/modemopts.js:574
msgid "RAT priority" msgid "RAT priority"
msgstr "" msgstr ""
@@ -2184,11 +2205,11 @@ msgstr ""
msgid "Radio stack" msgid "Radio stack"
msgstr "" msgstr ""
#: htdocs/luci-static/resources/view/wwand/settings.js:1293 #: htdocs/luci-static/resources/view/wwand/settings.js:1298
msgid "Radio technologies" msgid "Radio technologies"
msgstr "" msgstr ""
#: htdocs/luci-static/resources/wwand/modemopts.js:534 #: htdocs/luci-static/resources/wwand/modemopts.js:544
msgid "Radio technology" msgid "Radio technology"
msgstr "" msgstr ""
@@ -2254,21 +2275,21 @@ msgstr ""
msgid "Reboot" msgid "Reboot"
msgstr "" msgstr ""
#: htdocs/luci-static/resources/wwand/modemopts.js:642 #: htdocs/luci-static/resources/wwand/modemopts.js:666
msgid "Reboot after N failures" msgid "Reboot after N failures"
msgstr "" msgstr ""
#: htdocs/luci-static/resources/wwand/modemopts.js:671 #: htdocs/luci-static/resources/wwand/modemopts.js:695
msgid "Reboot after N protocol errors" msgid "Reboot after N protocol errors"
msgstr "" msgstr ""
#: htdocs/luci-static/resources/wwand/modemopts.js:672 #: htdocs/luci-static/resources/wwand/modemopts.js:696
msgid "" msgid ""
"Reboot after this many consecutive control-protocol errors. Gated by the " "Reboot after this many consecutive control-protocol errors. Gated by the "
"failure-reboot setting above — with reboot disabled it never fires." "failure-reboot setting above — with reboot disabled it never fires."
msgstr "" msgstr ""
#: htdocs/luci-static/resources/wwand/modemopts.js:643 #: htdocs/luci-static/resources/wwand/modemopts.js:667
msgid "" msgid ""
"Reboot the router after this many failed connection attempts. 0 = never " "Reboot the router after this many failed connection attempts. 0 = never "
"reboot — the hardware recovery rungs (op-mode cycle, modem reset, GPIO/" "reboot — the hardware recovery rungs (op-mode cycle, modem reset, GPIO/"
@@ -2289,7 +2310,7 @@ msgstr ""
msgid "Recovery" msgid "Recovery"
msgstr "" msgstr ""
#: htdocs/luci-static/resources/wwand/modemopts.js:651 #: htdocs/luci-static/resources/wwand/modemopts.js:675
msgid "Recovery steps" msgid "Recovery steps"
msgstr "" msgstr ""
@@ -2365,7 +2386,7 @@ msgstr ""
msgid "Repower" msgid "Repower"
msgstr "" msgstr ""
#: htdocs/luci-static/resources/wwand/modemopts.js:684 #: htdocs/luci-static/resources/wwand/modemopts.js:708
msgid "Repower / reset duration" msgid "Repower / reset duration"
msgstr "" msgstr ""
@@ -2388,7 +2409,7 @@ msgstr ""
msgid "Reset GPIO fallback" msgid "Reset GPIO fallback"
msgstr "" msgstr ""
#: htdocs/luci-static/resources/wwand/modemopts.js:665 #: htdocs/luci-static/resources/wwand/modemopts.js:689
msgid "Reset a never-answering modem after (s)" msgid "Reset a never-answering modem after (s)"
msgstr "" msgstr ""
@@ -2406,11 +2427,11 @@ msgstr ""
msgid "Reset modem now" msgid "Reset modem now"
msgstr "" msgstr ""
#: htdocs/luci-static/resources/view/wwand/settings.js:1328 #: htdocs/luci-static/resources/view/wwand/settings.js:1344
msgid "Reset radio/band/usage/roaming settings to defaults?" msgid "Reset radio/band/usage/roaming settings to defaults?"
msgstr "" msgstr ""
#: htdocs/luci-static/resources/wwand/modemopts.js:697 #: htdocs/luci-static/resources/wwand/modemopts.js:721
msgid "" msgid ""
"Reset the modem when, with a connection up, the kernel reports its transmit " "Reset the modem when, with a connection up, the kernel reports its transmit "
"queue stuck for this many seconds, i.e. the modem has stopped taking packets " "queue stuck for this many seconds, i.e. the modem has stopped taking packets "
@@ -2426,7 +2447,7 @@ msgid ""
"or dropped off USB." "or dropped off USB."
msgstr "" msgstr ""
#: htdocs/luci-static/resources/view/wwand/settings.js:1372 #: htdocs/luci-static/resources/view/wwand/settings.js:1388
msgid "Reset to defaults" msgid "Reset to defaults"
msgstr "" msgstr ""
@@ -2450,7 +2471,7 @@ msgstr ""
msgid "Restart modem now" msgid "Restart modem now"
msgstr "" msgstr ""
#: htdocs/luci-static/resources/wwand/modemopts.js:691 #: htdocs/luci-static/resources/wwand/modemopts.js:715
msgid "" msgid ""
"Restart the connection after this many seconds without received packets (0 = " "Restart the connection after this many seconds without received packets (0 = "
"off)." "off)."
@@ -2464,14 +2485,14 @@ msgstr ""
msgid "Restore now" msgid "Restore now"
msgstr "" msgstr ""
#: htdocs/luci-static/resources/view/wwand/settings.js:1304 #: htdocs/luci-static/resources/view/wwand/settings.js:1320
msgid "" msgid ""
"Restrict LTE to these bands. Leave everything unchecked to let the modem use " "Restrict LTE to these bands. Leave everything unchecked to let the modem use "
"all bands it supports — a narrowed list is a way to pin a known-good band, " "all bands it supports — a narrowed list is a way to pin a known-good band, "
"not a way to improve a working link." "not a way to improve a working link."
msgstr "" msgstr ""
#: htdocs/luci-static/resources/wwand/modemopts.js:535 #: htdocs/luci-static/resources/wwand/modemopts.js:545
msgid "Restrict the modem to certain radio access technologies." msgid "Restrict the modem to certain radio access technologies."
msgstr "" msgstr ""
@@ -2479,17 +2500,29 @@ msgstr ""
msgid "Revision" msgid "Revision"
msgstr "" msgstr ""
#: htdocs/luci-static/resources/view/wwand/settings.js:1417 #: htdocs/luci-static/resources/view/wwand/settings.js:1433
msgid "" msgid ""
"Rewrites the modem firmware mode (QMI ↔ MBIM). The modem resets; use only " "Rewrites the modem firmware mode (QMI ↔ MBIM). The modem resets; use only "
"when the other mode is known to work on this module. The daemon clears a " "when the other mode is known to work on this module. The daemon clears a "
"contradicting \"Control protocol\" pin when the switch succeeds." "contradicting \"Control protocol\" pin when the switch succeeds."
msgstr "" msgstr ""
#: htdocs/luci-static/resources/view/wwand/settings.js:1301 #: htdocs/luci-static/resources/view/wwand/settings.js:1317
msgid "Roaming" msgid "Roaming"
msgstr "" msgstr ""
#: htdocs/luci-static/resources/wwand/modemopts.js:530
msgid "Router (IPAd)"
msgstr ""
#: htdocs/luci-static/resources/wwand/modemopts.js:567
msgid "SA only"
msgstr ""
#: htdocs/luci-static/resources/wwand/modemopts.js:527
msgid "SGP.32 IPA"
msgstr ""
#: htdocs/luci-static/resources/wwand/format.js:278 #: htdocs/luci-static/resources/wwand/format.js:278
msgid "SGP.32 IoT eUICC" msgid "SGP.32 IoT eUICC"
msgstr "" msgstr ""
@@ -2504,7 +2537,7 @@ msgid "SIM"
msgstr "" msgstr ""
#: htdocs/luci-static/resources/wwand/esim.js:216 #: htdocs/luci-static/resources/wwand/esim.js:216
#: htdocs/luci-static/resources/wwand/modemopts.js:524 #: htdocs/luci-static/resources/wwand/modemopts.js:534
msgid "SIM PIN" msgid "SIM PIN"
msgstr "" msgstr ""
@@ -2638,7 +2671,7 @@ msgid ""
"before the reset GPIO is pulsed (default 30)." "before the reset GPIO is pulsed (default 30)."
msgstr "" msgstr ""
#: htdocs/luci-static/resources/wwand/modemopts.js:709 #: htdocs/luci-static/resources/wwand/modemopts.js:733
msgid "Seconds between throughput/signal telemetry samples while connected." msgid "Seconds between throughput/signal telemetry samples while connected."
msgstr "" msgstr ""
@@ -2649,13 +2682,13 @@ msgid ""
"still current." "still current."
msgstr "" msgstr ""
#: htdocs/luci-static/resources/wwand/modemopts.js:685 #: htdocs/luci-static/resources/wwand/modemopts.js:709
msgid "" msgid ""
"Seconds the modem is held de-powered during a recovery power-cycle (or held " "Seconds the modem is held de-powered during a recovery power-cycle (or held "
"in reset, when a reset GPIO is used). Default 30 s." "in reset, when a reset GPIO is used). Default 30 s."
msgstr "" msgstr ""
#: htdocs/luci-static/resources/wwand/modemopts.js:637 #: htdocs/luci-static/resources/wwand/modemopts.js:661
msgid "Seconds to wait before initializing the modem." msgid "Seconds to wait before initializing the modem."
msgstr "" msgstr ""
@@ -2719,11 +2752,11 @@ msgstr ""
msgid "Set automatic" msgid "Set automatic"
msgstr "" msgstr ""
#: htdocs/luci-static/resources/wwand/modemopts.js:735 #: htdocs/luci-static/resources/wwand/modemopts.js:759
msgid "Set the clock from GNSS" msgid "Set the clock from GNSS"
msgstr "" msgstr ""
#: htdocs/luci-static/resources/wwand/modemopts.js:717 #: htdocs/luci-static/resources/wwand/modemopts.js:741
msgid "Set the clock from the network" msgid "Set the clock from the network"
msgstr "" msgstr ""
@@ -2735,7 +2768,7 @@ msgstr ""
msgid "Show raw lpac log" msgid "Show raw lpac log"
msgstr "" msgstr ""
#: htdocs/luci-static/resources/view/wwand/settings.js:1296 #: htdocs/luci-static/resources/view/wwand/settings.js:1301
msgid "" msgid ""
"Shown, not set: this modem picks its technologies with its own RAT setting, " "Shown, not set: this modem picks its technologies with its own RAT setting, "
"and a band edit keeps it as it is." "and a band edit keeps it as it is."
@@ -2807,12 +2840,12 @@ msgid "State"
msgstr "" msgstr ""
#: htdocs/luci-static/resources/view/wwand/modems.js:609 #: htdocs/luci-static/resources/view/wwand/modems.js:609
#: htdocs/luci-static/resources/view/wwand/settings.js:1278 #: htdocs/luci-static/resources/view/wwand/settings.js:1283
#: htdocs/luci-static/resources/wwand/netsel.js:133 #: htdocs/luci-static/resources/wwand/netsel.js:133
msgid "Status" msgid "Status"
msgstr "" msgstr ""
#: htdocs/luci-static/resources/wwand/modemopts.js:718 #: htdocs/luci-static/resources/wwand/modemopts.js:742
msgid "" msgid ""
"Step the system clock to the network's time (NITZ) when it is more than two " "Step the system clock to the network's time (NITZ) when it is more than two "
"minutes off. Smaller differences are left to NTP. A router without a real-" "minutes off. Smaller differences are left to NTP. A router without a real-"
@@ -2830,7 +2863,7 @@ msgstr ""
msgid "Storage" msgid "Storage"
msgstr "" msgstr ""
#: htdocs/luci-static/resources/wwand/modemopts.js:625 #: htdocs/luci-static/resources/wwand/modemopts.js:649
msgid "Store the cell lock in modem non-volatile memory." msgid "Store the cell lock in modem non-volatile memory."
msgstr "" msgstr ""
@@ -2847,11 +2880,11 @@ msgstr ""
msgid "Switch now" msgid "Switch now"
msgstr "" msgstr ""
#: htdocs/luci-static/resources/view/wwand/settings.js:1415 #: htdocs/luci-static/resources/view/wwand/settings.js:1431
msgid "Switch protocol" msgid "Switch protocol"
msgstr "" msgstr ""
#: htdocs/luci-static/resources/view/wwand/settings.js:1406 #: htdocs/luci-static/resources/view/wwand/settings.js:1422
msgid "" msgid ""
"Switch the modem firmware to %s? The modem resets and re-enumerates — its " "Switch the modem firmware to %s? The modem resets and re-enumerates — its "
"connections come back on their own. A \"Control protocol\" pinned on the " "connections come back on their own. A \"Control protocol\" pinned on the "
@@ -2859,7 +2892,7 @@ msgid ""
"contradicts disables hardware recovery for this modem." "contradicts disables hardware recovery for this modem."
msgstr "" msgstr ""
#: htdocs/luci-static/resources/view/wwand/settings.js:1405 #: htdocs/luci-static/resources/view/wwand/settings.js:1421
msgid "" msgid ""
"Switch the modem firmware to MBIM? The modem resets and re-enumerates. Some " "Switch the modem firmware to MBIM? The modem resets and re-enumerates. Some "
"firmwares reject MBIM even though the switch itself succeeds — if the modem " "firmwares reject MBIM even though the switch itself succeeds — if the modem "
@@ -2868,7 +2901,7 @@ msgid ""
"contradicts disables hardware recovery for this modem." "contradicts disables hardware recovery for this modem."
msgstr "" msgstr ""
#: htdocs/luci-static/resources/wwand/modemopts.js:731 #: htdocs/luci-static/resources/wwand/modemopts.js:755
msgid "" msgid ""
"Switch the modem's GNSS on. With <em>wwand-gps</em> installed wwand reads " "Switch the modem's GNSS on. With <em>wwand-gps</em> installed wwand reads "
"the position itself: from the modem's NMEA port (reported as <em>gps_port</" "the position itself: from the modem's NMEA port (reported as <em>gps_port</"
@@ -2877,7 +2910,7 @@ msgid ""
"NMEA over the QMI location service, natively or over the MBIM passthrough." "NMEA over the QMI location service, natively or over the MBIM passthrough."
msgstr "" msgstr ""
#: htdocs/luci-static/resources/view/wwand/settings.js:1396 #: htdocs/luci-static/resources/view/wwand/settings.js:1412
msgid "Switch to %s" msgid "Switch to %s"
msgstr "" msgstr ""
@@ -2896,7 +2929,7 @@ msgid ""
"identifier of this cell" "identifier of this cell"
msgstr "" msgstr ""
#: htdocs/luci-static/resources/wwand/modemopts.js:696 #: htdocs/luci-static/resources/wwand/modemopts.js:720
msgid "TX stall timeout" msgid "TX stall timeout"
msgstr "" msgstr ""
@@ -2908,7 +2941,7 @@ msgstr ""
msgid "Technology" msgid "Technology"
msgstr "" msgstr ""
#: htdocs/luci-static/resources/wwand/modemopts.js:708 #: htdocs/luci-static/resources/wwand/modemopts.js:732
msgid "Telemetry interval" msgid "Telemetry interval"
msgstr "" msgstr ""
@@ -2925,7 +2958,7 @@ msgid ""
"LTE, this canvas appearing at all is the news." "LTE, this canvas appearing at all is the news."
msgstr "" msgstr ""
#: htdocs/luci-static/resources/view/wwand/settings.js:1300 #: htdocs/luci-static/resources/view/wwand/settings.js:1316
msgid "" msgid ""
"The 3GPP usage setting the modem reports to the network: whether this device " "The 3GPP usage setting the modem reports to the network: whether this device "
"is here for data or for voice. It is a preference, not a command — what the " "is here for data or for voice. It is a preference, not a command — what the "
@@ -3153,7 +3186,7 @@ msgstr ""
msgid "The operation failed." msgid "The operation failed."
msgstr "" msgstr ""
#: htdocs/luci-static/resources/view/wwand/settings.js:1298 #: htdocs/luci-static/resources/view/wwand/settings.js:1314
msgid "" msgid ""
"The order in which the modem searches the radio technologies, first row " "The order in which the modem searches the radio technologies, first row "
"first. Only ticked ones are searched: a technology allowed above but " "first. Only ticked ones are searched: a technology allowed above but "
@@ -3210,7 +3243,7 @@ msgstr ""
msgid "This modem does not expose SMS access." msgid "This modem does not expose SMS access."
msgstr "" msgstr ""
#: htdocs/luci-static/resources/view/wwand/settings.js:1316 #: htdocs/luci-static/resources/view/wwand/settings.js:1332
msgid "" msgid ""
"This modem forgets its bands when it is power-cycled, so they are kept in " "This modem forgets its bands when it is power-cycled, so they are kept in "
"the router configuration (band_lte / band_nr of the modem) and applied again " "the router configuration (band_lte / band_nr of the modem) and applied again "
@@ -3234,7 +3267,7 @@ msgstr ""
msgid "This modem restores \"%s\" before every radio-on." msgid "This modem restores \"%s\" before every radio-on."
msgstr "" msgstr ""
#: htdocs/luci-static/resources/view/wwand/settings.js:1291 #: htdocs/luci-static/resources/view/wwand/settings.js:1296
msgid "This modem's bands cannot be changed from here right now." msgid "This modem's bands cannot be changed from here right now."
msgstr "" msgstr ""
@@ -3284,7 +3317,7 @@ msgstr ""
msgid "Type · entries" msgid "Type · entries"
msgstr "" msgstr ""
#: htdocs/luci-static/resources/view/wwand/settings.js:1299 #: htdocs/luci-static/resources/view/wwand/settings.js:1315
msgid "UE usage" msgid "UE usage"
msgstr "" msgstr ""
@@ -3296,7 +3329,7 @@ msgstr ""
msgid "Unblock SIM" msgid "Unblock SIM"
msgstr "" msgstr ""
#: htdocs/luci-static/resources/wwand/modemopts.js:573 #: htdocs/luci-static/resources/wwand/modemopts.js:597
msgid "Unknown technology \"%s\" — use %s" msgid "Unknown technology \"%s\" — use %s"
msgstr "" msgstr ""
@@ -3404,7 +3437,7 @@ msgid ""
"exists and nothing is sent on it." "exists and nothing is sent on it."
msgstr "" msgstr ""
#: htdocs/luci-static/resources/view/wwand/settings.js:1295 #: htdocs/luci-static/resources/view/wwand/settings.js:1300
msgid "" msgid ""
"Which generations the modem may use. Unchecking one stops it being used at " "Which generations the modem may use. Unchecking one stops it being used at "
"all — a modem restricted to 5G will not fall back to LTE where 5G is absent, " "all — a modem restricted to 5G will not fall back to LTE where 5G is absent, "
@@ -3412,11 +3445,21 @@ msgid ""
"pinning a technology." "pinning a technology."
msgstr "" msgstr ""
#: htdocs/luci-static/resources/wwand/modemopts.js:563
msgid ""
"Which kind of 5G the modem may use: non-standalone (5G on an LTE anchor), "
"standalone (5G core), or both. Separate from \"Radio technology\", which "
"only allows 5G at all. Set over QMI on Qualcomm modems (QMI, or MBIM with "
"the QMI passthrough), otherwise over AT on the Foxconn T99W175 and Quectel "
"RG50xQ/RM5xxQ. With \"5G NR\" alone, \"NSA only\" finds no network, because "
"NSA needs LTE."
msgstr ""
#: htdocs/luci-static/resources/view/wwand/modems.js:130 #: htdocs/luci-static/resources/view/wwand/modems.js:130
msgid "Which modem, and its SIM." msgid "Which modem, and its SIM."
msgstr "" msgstr ""
#: htdocs/luci-static/resources/view/wwand/settings.js:1302 #: htdocs/luci-static/resources/view/wwand/settings.js:1318
msgid "" msgid ""
"Which networks the modem may register on. \"Home only\" refuses roaming " "Which networks the modem may register on. \"Home only\" refuses roaming "
"partners outright — useful against accidental cross-border charges, and the " "partners outright — useful against accidental cross-border charges, and the "
@@ -3440,6 +3483,15 @@ msgid ""
"messages." "messages."
msgstr "" msgstr ""
#: htdocs/luci-static/resources/wwand/modemopts.js:528
msgid ""
"Who runs an SGP.32 IoT eUICC that also has its own IPA (IPAe). By default "
"the card keeps its own IPA, and the router has no access to the card's "
"profiles. \"Router (IPAd)\" makes the router announce its own IPA to the "
"card. The card then turns its own IPA off and lets the router manage the "
"profiles: eSIM page, lpac, eIM plugin."
msgstr ""
#: htdocs/luci-static/resources/view/wwand/settings.js:918 #: htdocs/luci-static/resources/view/wwand/settings.js:918
msgid "" msgid ""
"Without this the lock is lost on the next modem reset — which is the safer " "Without this the lock is lost on the next modem reset — which is the safer "
@@ -3468,7 +3520,7 @@ msgstr ""
msgid "Written to the modem (%d record(s))." msgid "Written to the modem (%d record(s))."
msgstr "" msgstr ""
#: htdocs/luci-static/resources/wwand/modemopts.js:690 #: htdocs/luci-static/resources/wwand/modemopts.js:714
msgid "Zero-RX timeout" msgid "Zero-RX timeout"
msgstr "" msgstr ""
@@ -3777,7 +3829,7 @@ msgstr ""
#: htdocs/luci-static/resources/wwand/format.js:291 #: htdocs/luci-static/resources/wwand/format.js:291
msgid "" msgid ""
"in the card (IPAe) — the card and its eIM manage the profiles; the router " "in the card (IPAe) — the card and its eIM manage the profiles; the router "
"has no ES10 access" "has no ES10 access (modem setting “SGP.32 IPA” hands it over)"
msgstr "" msgstr ""
#: htdocs/luci-static/resources/view/wwand/sims.js:42 #: htdocs/luci-static/resources/view/wwand/sims.js:42
@@ -4276,6 +4328,12 @@ msgid ""
"— set \"Modem reset GPIO\" on this modem to give the step something to do" "— set \"Modem reset GPIO\" on this modem to give the step something to do"
msgstr "" msgstr ""
#: htdocs/luci-static/resources/view/wwand/settings.js:1310
msgid ""
"this modem's settings fix \"Radio technology\" at \"%s\", and wwand applies "
"that again whenever the modem starts. To keep a change, make it there."
msgstr ""
#: htdocs/luci-static/resources/view/wwand/status.js:615 #: htdocs/luci-static/resources/view/wwand/status.js:615
msgid "throttling, level %d" msgid "throttling, level %d"
msgstr "" msgstr ""
+2 -2
View File
@@ -8,8 +8,8 @@
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
PKG_NAME:=tailscale-next PKG_NAME:=tailscale-next
PKG_VERSION:=1.104.5 PKG_VERSION:=1.104.7
PKG_RELEASE:=5 PKG_RELEASE:=6
# Architecture mapping for pre-built binaries # Architecture mapping for pre-built binaries
ifeq ($(ARCH),x86_64) ifeq ($(ARCH),x86_64)
+2 -2
View File
@@ -11,7 +11,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=v2raya-core PKG_NAME:=v2raya-core
PKG_VERSION:=2.5.15 PKG_VERSION:=2.5.15
PKG_RELEASE:=4 PKG_RELEASE:=5
PKG_SOURCE:=v2rayA-$(PKG_VERSION).tar.gz PKG_SOURCE:=v2rayA-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/v2rayA/v2rayA/tar.gz/v$(PKG_VERSION)? PKG_SOURCE_URL:=https://codeload.github.com/v2rayA/v2rayA/tar.gz/v$(PKG_VERSION)?
@@ -28,7 +28,7 @@ PKG_BUILD_PARALLEL:=1
PKG_BUILD_FLAGS:=no-mips16 PKG_BUILD_FLAGS:=no-mips16
# Keep this in sync with v2raya/Makefile. # Keep this in sync with v2raya/Makefile.
V2RAYA_GO_TOOLCHAIN?=go1.27.3+auto V2RAYA_GO_TOOLCHAIN?=go1.27.4+auto
GO_PKG:=github.com/v2rayA/v2raya-core GO_PKG:=github.com/v2rayA/v2raya-core
GO_PKG_BUILD_PKG:=github.com/v2rayA/v2raya-core/main GO_PKG_BUILD_PKG:=github.com/v2rayA/v2raya-core/main
+2 -2
View File
@@ -9,8 +9,8 @@
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
PKG_NAME:=v2raya-geoip PKG_NAME:=v2raya-geoip
PKG_VERSION:=202611050539 PKG_VERSION:=202611080027
PKG_RELEASE:=1 PKG_RELEASE:=2
PKG_LICENSE:=CC-BY-SA-4.0 PKG_LICENSE:=CC-BY-SA-4.0
PKG_MAINTAINER:=Amr Fateem <amr.fateem@yahoo.com> PKG_MAINTAINER:=Amr Fateem <amr.fateem@yahoo.com>
+3 -3
View File
@@ -10,8 +10,8 @@
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
PKG_NAME:=v2raya-geosite PKG_NAME:=v2raya-geosite
PKG_VERSION:=20261107053621 PKG_VERSION:=20261112220449
PKG_RELEASE:=1 PKG_RELEASE:=2
PKG_LICENSE:=MIT PKG_LICENSE:=MIT
PKG_MAINTAINER:=Amr Fateem <amr.fateem@yahoo.com> PKG_MAINTAINER:=Amr Fateem <amr.fateem@yahoo.com>
@@ -19,7 +19,7 @@ PKG_MAINTAINER:=Amr Fateem <amr.fateem@yahoo.com>
include $(INCLUDE_DIR)/package.mk include $(INCLUDE_DIR)/package.mk
GEOSITE_FILE:=dlc.dat.$(PKG_VERSION) GEOSITE_FILE:=dlc.dat.$(PKG_VERSION)
GEOSITE_HASH:=f110a7b96b3e3ed9c19cf18ae0ac5f8c46de54fa778863609c0a3b8f1738b58c GEOSITE_HASH:=02ad51927d05608b672bbcdf37f37b94ce1fdb7dcd10852f367ed457ad56280b
define Download/geosite define Download/geosite
URL:=https://github.com/v2fly/domain-list-community/releases/download/$(PKG_VERSION)/ URL:=https://github.com/v2fly/domain-list-community/releases/download/$(PKG_VERSION)/
+6 -8
View File
@@ -14,14 +14,14 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=v2raya PKG_NAME:=v2raya
PKG_VERSION:=2.5.15 PKG_VERSION:=2.5.15
PKG_RELEASE:=14 PKG_RELEASE:=15
PKG_SOURCE:=v2rayA-$(PKG_VERSION).tar.gz PKG_SOURCE:=v2rayA-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/v2rayA/v2rayA/tar.gz/v$(PKG_VERSION)? PKG_SOURCE_URL:=https://codeload.github.com/v2rayA/v2rayA/tar.gz/v$(PKG_VERSION)?
PKG_HASH:=skip PKG_HASH:=skip
WEB_FILE:=v2raya-web-$(PKG_VERSION).tar.gz WEB_FILE:=v2raya-web-$(PKG_VERSION).tar.gz
WEB_HASH:=76774f195ee74604fbc43a48fe74e5f3363e81ec68af02d1c26feeeacc0f63ae WEB_HASH:=5e4dc08ca1dd89d3cc627d951018739c753ced272bd698d8778bed3bba2197e7
PKG_BUILD_DIR:=$(BUILD_DIR)/v2rayA-$(PKG_VERSION)/service PKG_BUILD_DIR:=$(BUILD_DIR)/v2rayA-$(PKG_VERSION)/service
@@ -37,7 +37,7 @@ PKG_BUILD_FLAGS:=no-mips16
# shipped by older OpenWrt releases is older than that, so let GOTOOLCHAIN # shipped by older OpenWrt releases is older than that, so let GOTOOLCHAIN
# fetch the matching toolchain from proxy.golang.org during the build. # fetch the matching toolchain from proxy.golang.org during the build.
# scripts/update-version.sh refreshes this after a major Go bump. # scripts/update-version.sh refreshes this after a major Go bump.
V2RAYA_GO_TOOLCHAIN?=go1.27.3+auto V2RAYA_GO_TOOLCHAIN?=go1.27.4+auto
GO_PKG:=github.com/v2rayA/v2rayA GO_PKG:=github.com/v2rayA/v2rayA
GO_PKG_BUILD_PKG:=github.com/v2rayA/v2rayA GO_PKG_BUILD_PKG:=github.com/v2rayA/v2rayA
@@ -123,11 +123,9 @@ endef
define Build/Prepare define Build/Prepare
$(call Build/Prepare/Default) $(call Build/Prepare/Default)
# OpenWrt's LAN is a bridge (br-lan). v2rayA 2.5.x defaults to excluding # v2rayA 2.5.15 includes LAN bridges in TPROXY on OpenWrt by default
# br-* from transparent proxy, which silently bypasses every LAN client. # (upstream PR #2057). The historical br-* exclusion is migrated in
# The old OpenWrt package removed that exclusion with TproxyNotSkipBr; # MigrateOpenWrtBridgeExclusion, so no rewrite is needed here.
# 2.5.x moved it into this stored default, so strip it here as well.
$(SED) 's/,br-\*"/"/' $(PKG_BUILD_DIR)/db/configure/setting.go
# v2rayA 2.2.7 (the old OpenWrt package) did not hijack DNS. 2.5.x turns # v2rayA 2.2.7 (the old OpenWrt package) did not hijack DNS. 2.5.x turns
# DNS interception on by default and sends queries through the proxy. With # DNS interception on by default and sends queries through the proxy. With
+8 -7
View File
@@ -50,12 +50,12 @@
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
PKG_NAME:=wwand PKG_NAME:=wwand
PKG_VERSION:=1.9.0_pre20 PKG_VERSION:=1.9.0_pre27
PKG_RELEASE:=93 PKG_RELEASE:=94
PKG_SOURCE_PROTO:=git PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/ddimension/wwand.git PKG_SOURCE_URL:=https://github.com/ddimension/wwand.git
PKG_SOURCE_VERSION:=b646c9ec93928e8a8e57356551cfa7717d7171b6 PKG_SOURCE_VERSION:=069546e1c817cac4c3936a1b98057b27cad7fd80
PKG_MIRROR_HASH:=skip PKG_MIRROR_HASH:=skip
PKG_LICENSE:=GPL-2.0-only PKG_LICENSE:=GPL-2.0-only
@@ -473,15 +473,16 @@ define Package/wwand-mhi
SUBMENU:=WWAN SUBMENU:=WWAN
TITLE:=PCIe/MHI transport + drivers for wwand TITLE:=PCIe/MHI transport + drivers for wwand
DEPENDS:=+wwand +kmod-mhi-pci-generic +kmod-mhi-wwan-ctrl \ DEPENDS:=+wwand +kmod-mhi-pci-generic +kmod-mhi-wwan-ctrl \
+kmod-mhi-wwan-mbim +kmod-mhi-net +kmod-mhi-wwan-mbim +kmod-mhi-net +kmod-qrtr-mhi
endef endef
define Package/wwand-mhi/description define Package/wwand-mhi/description
Support for cellular modems attached over PCIe/MHI (Foxconn T99W175 and Support for cellular modems attached over PCIe/MHI (Foxconn T99W175 and
similar), whose control ports appear on the kernel wwan subsystem. Pulls the similar), whose control ports appear on the kernel wwan subsystem. Pulls the
MHI bus/PCI/control/data drivers and installs the wwan-subsystem hotplug so MHI bus/PCI/control/data drivers and the MHI IPC-router channel (for
wwand binds these modems on boot. Install together with a control backend modems whose QMI lives only on the QRTR bus, option device 'qrtr'), and
(wwand-qmi or wwand-mbim). installs the wwan-subsystem hotplug so wwand binds these modems on boot.
Install together with a control backend (wwand-qmi or wwand-mbim).
Adding wwand-mbim is worth weighing on a QMI-driven MHI modem: many of them Adding wwand-mbim is worth weighing on a QMI-driven MHI modem: many of them
expose no DUN channel and therefore no AT port at all, and wwand can then expose no DUN channel and therefore no AT port at all, and wwand can then