Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
tech [2026/03/24 06:07] nedstech [2026/04/11 01:39] (current) neds
Line 1: Line 1:
 ====== SiliconDust TECH manual ====== ====== SiliconDust TECH manual ======
-<lead>Documentation relating to the commercial-grade TECH product line from SiliconDust.</lead>+<lead>Documentation relating to the commercial TECH product line from SiliconDust.</lead>
  
 ===== Hardware ===== ===== Hardware =====
 <WRAP indent> <WRAP indent>
  
 +==== Current models ====
 +<WRAP indent>
 +
 +^ Model numbers  ^ Tuners ^ Signal type ^ Size ^ 
 +^ TECH5-16US-4X4 | 16 (4 modules of 4 tuners) | ATSC 1.0, QAM64/256 | 1U 19" rack-mount | 
 +| | //Power supply information and other notes:// \\  |||
 +^ TECH5-16DT-4X4 | 16 (4 modules of 4 tuners) | DVB-T1, DVB-T2, DVB-C | 1U 19" rack-mount | 
 +| | //Power supply information and other notes:// \\  |||
 +^ TECH-4K | 4 (1 module of 4 tuners) | **Tuners 0+1:** ATSC 3.0, ATSC 1.0, QAM64/256 \\ **Tuners 2+3:** ATSC 1.0, QAM64/256 | 3.4"x3.4"x0.8"
 +| | //Power supply information and other notes:// \\ <wrap>5Volt 1.5Amp regulated power adapter (higher Amp rating ok) \\  1.7mm ID / 4.0mm OD plug, 9.5mm depth, center positive \\  Max 5.25V @ no-load \\  Min 4.75V @ 1.5A \\  Noise <= 150mVp-p </wrap> |||
 +^ TECH5-4K8-2X4 | 8 (4 modules of 2 tuners) | ATSC 3.0, ATSC 1.0, QAM64/256 | 1U 19" rack-mount | 
 +| | //Power supply information and other notes:// \\  |||
 +
 +</WRAP>
 +==== Past models (still supported) ====
 +<WRAP indent>
 +
 +<button collapse="past">Click to see table of past models</button>
 + 
 +<collapse id="past" collapsed="true">
 +
 +^ Model numbers  ^ Tuners ^ Signal type ^ Size ^ 
 +| TECH-US | 
 +| TECH3-US | 
 +| TECH3-8US-2X4 | 
 +| TECH4-2US | 
 +| TECH4-8US-2X4 | 
 +| TECH4-8IS-2X4 | 
 +| TECH3-EU | 
 +| TECH3-8EU-2X4 | 
 +| TECH4-2DT | 
 +| TECH4-8DT-2X4 | 
 +| TECH3-6CC-3X2 | 
 +| TECH3-3CC | 
 +| TECH3-8DC-4X2 | 
 +| TECH5-16DC-4X4 | 
 +</collapse>
 +
 +</WRAP>
 +==== LEDs and ports ====
 +<WRAP indent>
 +
 +
 +
 +</WRAP>
 +==== Power ====
 +<WRAP indent>
 +
 +All devices should be used with the included power supply or power cable.
 +
 +</WRAP>
 ==== Ethernet ==== ==== Ethernet ====
 <WRAP indent> <WRAP indent>
 +
 Connect the Ethernet port(s) to a network switch. On models with multiple ports, all ports must be connected in order for all tuners to be accessible. A single port can be directly connected to the network interface on a PC to access that specific device. All ports are auto-crossover so a standard Ethernet cable can be used. Connect the Ethernet port(s) to a network switch. On models with multiple ports, all ports must be connected in order for all tuners to be accessible. A single port can be directly connected to the network interface on a PC to access that specific device. All ports are auto-crossover so a standard Ethernet cable can be used.
  
 </WRAP> </WRAP>
 +
 </WRAP> </WRAP>
 ===== Additional Tools and Software ===== ===== Additional Tools and Software =====
Line 23: Line 76:
 <WRAP indent> <WRAP indent>
  
-Download and install the latest Windows release of the HDHomeRun software: https://download.silicondust.com/hdhomerun/hdhomerun_tech_windows.exe+Download and install the latest Windows release of TECH Setup utility: https://download.silicondust.com/hdhomerun/hdhomerun_tech_windows.exe
  
 The HDHomeRun Setup wizard is optional. The HDHomeRun Setup wizard is optional.
Line 33: Line 86:
 <WRAP indent> <WRAP indent>
  
-Download and extract the libhdhomerun archive.+Download and extract the libhdhomerun archive: https://download.silicondust.com/hdhomerun/libhdhomerun.tgz
  
 Run "make" to compile hdhomerun_config (systems that use a non-GNU make by default may need to install and use "gmake" instead). Run "make" to compile hdhomerun_config (systems that use a non-GNU make by default may need to install and use "gmake" instead).
Line 39: Line 92:
 Copy hdhomerun_config to /usr/local/bin Copy hdhomerun_config to /usr/local/bin
  
-</WRAP> 
 </WRAP> </WRAP>
  
 +</WRAP>
 ===== Command Line Utility (hdhomerun_config) ===== ===== Command Line Utility (hdhomerun_config) =====
 <WRAP indent> <WRAP indent>
Line 108: Line 161:
 <code> <code>
 /card/status Get status of CableCARD (6CC only) /card/status Get status of CableCARD (6CC only)
-/oob/channel <modulation>:<freq> Get/set out of band channel (6CC only) +/oob/channel <modulation>:<freq> Get/set out of band channel (TECH3-CC only) 
-/oob/debug Get out of band channel debug info (6CC only) +/oob/debug Get out of band channel debug info (TECH3-CC only) 
-/oob/status Get out of band channel status info (6CC only)+/oob/status Get out of band channel status info (TECH3-CC only)
 /sys/boot <config> Get/set boot configuration /sys/boot <config> Get/set boot configuration
 /sys/copyright Get copyright information /sys/copyright Get copyright information
Line 118: Line 171:
 /sys/ipaddr dhcp|"<ip> <mask> <gw> <dns>" Get/set system IP address /sys/ipaddr dhcp|"<ip> <mask> <gw> <dns>" Get/set system IP address
 /sys/model Get/set model string /sys/model Get/set model string
-/sys/restart <resource> Restart device/component+/sys/restart <resource> Restart device/component, example "restart self" will reboot the unit
 /sys/version Get firmware version /sys/version Get firmware version
 /tuner<n>/channel <modulation>:<freq|ch> Get/set channel /tuner<n>/channel <modulation>:<freq|ch> Get/set channel
Line 130: Line 183:
 /tuner<n>/status Get tuner status /tuner<n>/status Get tuner status
 /tuner<n>/target <ip>:<port> Get/set stream target /tuner<n>/target <ip>:<port> Get/set stream target
-/tuner<n>/vchannel <vchannel> Get/set virtual channel number (6CC only+/tuner<n>/target forward ATSC 3.0 only. Forwards all multicast IP packets to the LAN 
-/tuner<n>/vstatus Get/set subscription/protection status (6CC only)+/tuner<n>/vchannel <vchannel> Get/set virtual channel number (TECH3-CC, TECH4 and later
 +/tuner<n>/vstatus Get/set subscription/protection status (TECH3-CC only) 
 +/tuner<0|1>/plpinfo ATSC 3.0 only 
 +/tuner<0|1>/l1detail ATSC 3.0 only
 </code> </code>
 </WRAP> </WRAP>
Line 187: Line 243:
  
 </WRAP> </WRAP>
-==== Tuning a virtual channel (TECH3-6CC only) ====+==== Tuning a virtual channel ====
 <WRAP indent> <WRAP indent>
 +TECH3-CC, TECH4, and later models support tuning by virtual channel number.
  
 To set a virtual channel use the set vchannel command: To set a virtual channel use the set vchannel command:
Line 315: Line 372:
  
 It may take several seconds after setting the channel for the stream information to be fully populated (depending on how long the channel takes to lock and how often the stream information is sent by the broadcaster/cable provider). It may take several seconds after setting the channel for the stream information to be fully populated (depending on how long the channel takes to lock and how often the stream information is sent by the broadcaster/cable provider).
 +
 </WRAP> </WRAP>
 ==== Filtering by program (sub-channel) ==== ==== Filtering by program (sub-channel) ====
 <WRAP indent> <WRAP indent>
  
-TECH3 and later supports automatic PID filtering by program number or virtual channel number:+Automatic PID filtering by program number or virtual channel number:
  
 <WRAP indent> <WRAP indent>
Line 365: Line 423:
  
 </WRAP> </WRAP>
 +==== Saving a stream ====
 +<WRAP indent>
 +
 +The hdhomerun_config command can be used to automate the process of saving to the local filesystem:
 +
 +<WRAP indent>
 +<code>
 +Format: hdhomerun_config <id> save /tuner<n> <filename>
 +Example: hdhomerun_config FFFFFFFF save /tuner0 capture.ts
 +</code>
 +</WRAP>
 +
 +While saving the stream, a single period “.” will be displayed every second. Errors will be indicated by
 +a letter.
 +
 +Example output:
 +<WRAP indent>
 +<code>
 +............n...............................n..........ts..........
 +-- Video statistics --
 +23323 packets recieved, 2 network errors, 1 transport errors, 1 sequence errors
 +</code>
 +</WRAP>
 +
 +**Advanced:** A filename of “null” indicates no file should be created, allowing the use of the save command as a diagnostic tool.
 +
 +**Advanced:** “-” may be used as a filename to indicate standard output, allowing the save command to be used as a pipe on supported platforms.
 +
 +<WRAP indent>
 +<code>
 +Example: hdhomerun_config FFFFFFFF save /tuner0 - | vlc -
 +</code>
 +</WRAP>
 +
 +</WRAP>
 +==== Streaming to a target machine ====
 +<WRAP indent>
 +
 +Set the target IP address and port number using the set target command:
 +
 +<WRAP indent>
 +<code>
 +Format: hdhomerun_config <id> set /tuner<n>/target udp://<ip>:<port>
 +Format: hdhomerun_config <id> set /tuner<n>/target rtp://<ip>:<port>
 +Example: hdhomerun_config FFFFFFFF set /tuner0/target udp://192.168.1.100:5000
 +Example: hdhomerun_config FFFFFFFF set /tuner0/target rtp://192.168.1.100:5000
 +</code>
 +</WRAP>
 +
 +The target machine must be listening on the given UDP port. The TECH will automatically clear the target if a ICMP port unreachable message is received when sending to a unicast address. To override this, add no_clear to the target.
 +
 +<WRAP indent>
 +<code>
 +Format: hdhomerun_config <id> set /tuner<n>/target "udp://<ip>:<port> no_clear"
 +Format: hdhomerun_config <id> set /tuner<n>/target "rtp://<ip>:<port> no_clear"
 +Example: hdhomerun_config FFFFFFFF set /tuner0/target "udp://192.168.1.100:5000 no_clear"
 +Example: hdhomerun_config FFFFFFFF set /tuner0/target "rtp://192.168.1.100:5000 no_clear"
 +</code>
 +</WRAP>
 +
 +A global broadcast (255.255.255.255), subnet broadcast, or multicast target can be specified however care must be taken to ensure that the traffic will not cause problems with other devices on the network.
 +
 +If the local network is bridged to a wireless network then the AP will typically transmit at a low broadcast speed saturating the wireless network.
 +
 +The time-to-live (TTL) defaults to 64. To configure a lower TTL use the following format (quotes required):
 +
 +<WRAP indent>
 +<code>
 +Format: hdhomerun_config <id> set /tuner<n>/target "udp://<ip>:<port> ttl=<n>"
 +Format: hdhomerun_config <id> set /tuner<n>/target "rtp://<ip>:<port> ttl=<n>"
 +Example: hdhomerun_config FFFFFFFF set /tuner0/target "udp://192.168.1.100:5000 ttl=8"
 +Example: hdhomerun_config FFFFFFFF set /tuner0/target "rtp://192.168.1.100:5000 ttl=8"
 +</code>
 +</WRAP>
 +
 +</WRAP>
 +==== Example: Streaming to VLC ====
 +<WRAP indent>
 +
 +Run VLC: Media, Open Network Stream. Select UDP/RTP. Specify port 5000.
 +
 +Discover the device:
 +
 +<WRAP indent>
 +<code>
 +hdhomerun_config discover
 +</code>
 +</WRAP>
 +
 +Run a channel scan:
 +
 +<WRAP indent>
 +<code>
 +hdhomerun_config FFFFFFFF scan /tuner0 scan0.log
 +</code>
 +</WRAP>
 +
 +Set the physical channel:
 +
 +<WRAP indent>
 +<code>
 +hdhomerun_config FFFFFFFF set /tuner0/channel auto:651000000
 +</code>
 +</WRAP>
 +
 +Check sub-programs:
 +
 +<WRAP indent>
 +<code>
 +hdhomerun_config FFFFFFFF get /tuner0/streaminfo
 +</code>
 +</WRAP>
 +
 +Select a sub-program:
 +
 +<WRAP indent>
 +<code>
 +hdhomerun_config FFFFFFFF set /tuner0/program 3
 +</code>
 +</WRAP>
 +
 +Set the target:
 +
 +<WRAP indent>
 +<code>
 +hdhomerun_config FFFFFFFF set /tuner0/target udp://<ip address of pc>:5000
 +</code>
 +</WRAP>
 +
 +</WRAP>
 +</WRAP>
 +
 +===== HTTP Streaming =====
 +<WRAP indent>
 +<btn type="success" size="xs" icon="fa fa-chevron-right">[[:http_api|See also: HTTP API documentation]]</btn>
 +
 +TECH3-CC, TECH4, and later models can be used to stream via HTTP (unicast only) to VLC or other clients.
 +
 +<WRAP indent>
 +<code>
 +Format: http://<ip address of device>:5004/auto/v<vchannel number>
 +Example: http://10.10.10.2:5004/auto/v721
 +</code>
 +</WRAP>
 +
 +</WRAP>
 +
 +===== Lineup file =====
 +<WRAP indent>
 +TECH3-CC, TECH4, and later models support virtual channel lineup information. This is available in XML and JSON format.
 +
 +<WRAP indent>
 +<code>
 +http://<ip address of device>/lineup.xml
 +http://<ip address of device>/lineup.json
 +</code>
 +</WRAP>
 +
 +</WRAP>
 +
 +===== Datacast operation =====
 +<WRAP indent>
 +
 +TECH units support Datacast TCP/IP over OTA broadcast. Datacasting often provides news, weather, traffic, stock market, and other information which may or may not relate to the program[s] it is carried with. An electronic program guide is usually included. Datacast TCP-IP packets are reassembled and then routed to the LAN port.
 +
 +Example:
 +
 +Discover the device:
 +
 +<WRAP indent>
 +<code>
 +hdhomerun_config discover
 +</code>
 +</WRAP>
 +
 +Set the physical channel:
 +
 +<WRAP indent>
 +<code>
 +hdhomerun_config FFFFFFFF set /tuner0/channel auto:651000000
 +</code>
 +</WRAP>
 +
 +Set the datacast PID:
 +
 +<WRAP indent>
 +<code>
 +hdhomerun_config FFFFFFFF set /tuner0/filter 0x0A00
 +</code>
 +</WRAP>
 +
 +Set the target:
 +
 +<WRAP indent>
 +<code>
 +hdhomerun_config FFFFFFFF set /tuner0/target datacast
 +</code>
 +</WRAP>
 +
 +</WRAP>
 +
 +===== Boot scripts =====
 +<WRAP indent>
 +
 +The /sys/boot variable allows the TECH unit to automatically set variables at startup, allowing you to preserve settings across power outages or simply set the power on defaults.
 +
 +The syntax for the /sys/boot consists of multiple lines of text; a variable name followed by a single space and then the value: (there should not be any space before the variable name)
 +
 +<WRAP indent>
 +<code>
 +<variable1> <value of variable1>
 +<variable2> <value of variable2>
 +...
 +<variableN> <value of variableN>
 +</code>
 +</WRAP>
 +
 +Example (save as boot.txt):
 +
 +<WRAP indent>
 +<code>
 +/tuner0/channelmap us-cable
 +/tuner0/channel 103
 +/tuner0/program 4
 +</code>
 +</WRAP>
 +
 +To place a wait period between commands you can use the "sleep" command followed by the number of seconds:
 +
 +<WRAP indent>
 +<code>
 +<first command>
 +
 +sleep 60
 +
 +<next command>
 +</code>
 +</WRAP>
 +
 +
 +To store the configuration to the device:
 +
 +<WRAP indent>
 +<code>
 +Format: hdhomerun_config <id> set /sys/boot - < filename
 +Example: hdhomerun_config FFFFFFFF set /sys/boot - < boot.txt
 +</code>
 +</WRAP>
 +
 +Changes will be applied the next boot; to execute the new /sys/boot immediately:
 +
 +<WRAP indent>
 +<code>
 +Format: hdhomerun_config <id> execute
 +Example: hdhomerun_config FFFFFFFF execute
 +</code>
 +</WRAP>
 +
 +</WRAP>
 +===== Static IP assignment =====
 +<WRAP indent>
 +
 +A static IP address can be configured using the following command (the quotes are required as shown):
 +
 +<WRAP indent>
 +<code>
 +Format: hdhomerun_config <old ip> set /sys/ipaddr "<new ip> <subnet> <gateway>"
 +Example: hdhomerun_config 169.254.34.98 set /sys/ipaddr "10.10.20.43 255.255.255.0 10.10.20.1"
 +</code>
 +</WRAP>
 +
 +Note: The TECH requires a gateway when used to stream multicast, even if on the same subnet.
 +
 +==== Reverting to DHCP ====
 +<WRAP indent>
 +
 +The TECH can be configured for DHCP operation (default) using the following command:
 +
 +<WRAP indent>
 +<code>
 +Format: hdhomerun_config <old ip> set /sys/ipaddr dhcp
 +Example: hdhomerun_config 169.254.34.98 set /sys/ipaddr dhcp
 +</code>
 +</WRAP>
 +
 +<WRAP info>
 +If you cannot access the TECH due to the IP address change, do the following to reset:
 +
 +Set a static IP on the computer in the 169.254.x.y range (e.g. 169.254.1.9) with a 255.255.0.0 subnet mask. The auto IP address for the TECH device will be randomly chosen within the 169.254.x.y range. Use the [[https://download.silicondust.com/hdhomerun/hdhomerun_tech_windows.exe|TECH Config GUI]] to locate it and reset the IP.
 +</WRAP>
 +
 +</WRAP>
 +
 +</WRAP>
 +
 +===== Setting the channel map =====
 +<WRAP indent>
 +
 +The channel map is a non-volatile configuration option that is used to set the channel to frequency table, to configure the channel scan table, and to optimize the auto-modulation detection.
 +
 +GUI: The channel map can be set for each tuner by running HDHomeRun Config (GUI).
 +
 +Command line: The channel map can be set for each tuner using the following command:
 +
 +<WRAP indent>
 +<code>
 +Format: hdhomerun_config <ip|id> set /tuner<n>/channelmap <channelmap>
 +Example: hdhomerun_config 10001000 set /tuner0/channelmap us-cable
 +Example: hdhomerun_config 10001000 set /tuner1/channelmap us-cable
 +</code>
 +</WRAP>
 +
 +Channel maps supported by US hardware:
 +
 +<WRAP indent>
 +^ Name ^ Description ^ Location ^
 +| us-bcast | Digital Antenna (ATSC). | US, Canada |
 +| us-cable | Digital Cable - Normal frequency layout. | US, Canada |
 +| us-hrc | Digital Cable - HRC frequency layout. | US, Canada |
 +| us-irc | Digital Cable - IRC frequency layout. | US, Canada |
 +</WRAP>
 +
 +Channel maps supported by DVB hardware:
 +
 +<WRAP indent>
 +^ Name ^ Description ^ Location ^
 +| au-bcast | Digital Antenna (Australia). | Australia |
 +| au-cable | Digital Cable (Australia). | Australia |
 +| eu-bcast | Digital Antenna (Europe). | Europe, New Zealand |
 +| eu-cable | Digital Cable (Europe). | Europe, New Zealand |
 +| tw-bcast | Digital Antenna (Taiwan). | Taiwan |
 +| tw-cable | Digital Cable (Taiwan). | Taiwan |
 +</WRAP>
 +
 +</WRAP>
 +===== Multicast =====
 +<WRAP indent>
 +
 +TECH supports multicast streaming within a network.
 +
 +  - Using HDHomeRun Config GUI or hdhomerun_config choose a desired channel and program number for each tuner. In this example we will use channel 19 program 3 on tuner 0 and channel 30 program 1 on tuner 1.
 +  - Choose a multicast IP address for each stream. As a general rule the multicast address should be in the range of 239.255.0.0 to 239.255.255.255. In this example we will use 239.255.1.1 and 239.255.1.2
 +  - Choose a destination (client) port number. The port should be outside the the well-known ports range (we recommend 50000+) and should be unique for each stream. In this example we will use 59001 and 59002.
 +  - Write the boot script (text file):<WRAP><code>
 +/tuner0/channelmap us-bcast
 +/tuner0/channel 19
 +/tuner0/program 3
 +/tuner0/target rtp://239.255.1.1:59001 ttl=64
 +
 +/tuner1/channelmap us-bcast
 +/tuner1/channel 30
 +/tuner1/program 1
 +/tuner1/target rtp://239.255.1.2:59002 ttl=64</code></WRAP>
 +  - Write the boot script to the device: <WRAP><code>hdhomerun_config 10010003 set /sys/boot - < boot.txt</code></WRAP>
 +  - Execute the boot script: <WRAP><code>hdhomerun_config 10010003 execute</code></WRAP>
 +  - Check the tuner status and target for each tuner. The packets-per-second “pps” number should be non-zero indicating that the device is sending the stream. <WRAP><code>hdhomerun_config 10010003 get /tuner0/debug
 +hdhomerun_config 10010003 get /tuner0/target
 +hdhomerun_config 10010003 get /tuner1/debug
 +hdhomerun_config 10010003 get /tuner1/target</code></WRAP>
 +
 +</WRAP>
 +===== Example Boot Script Configurations =====
 +<WRAP indent>
 +
 +Tuning 2 ATSC channels and streaming to multicast addresses using RTP:
 +
 +<WRAP indent>
 +<code>
 +/tuner0/channelmap us-bcast
 +/tuner0/channel 31
 +/tuner0/program 3
 +/tuner0/target rtp://239.255.1.1:59001
 +/tuner1/channelmap us-bcast
 +/tuner1/channel 8
 +/tuner1/program 1
 +/tuner1/target rtp://239.255.1.2:59002
 +</code>
 +</WRAP>
 +
 +Tuning 3 digital cable channels using a CableCARD and streaming to multicast addresses using RTP:
 +
 +<WRAP indent>
 +<code>
 +/tuner0/vchannel 702
 +/tuner0/target rtp://239.255.1.1:59001
 +/tuner1/vchannel 740
 +/tuner1/target rtp://239.255.1.2:59002
 +/tuner2/vchannel 771
 +/tuner1/target rtp://239.255.1.3:59003
 +</code>
 +</WRAP>
 +
 +Tuning 2 DVB-T channels in Australia and streaming to multicast addresses using UDP:
 +
 +<WRAP indent>
 +<code>
 +/tuner0/channelmap au-bcast
 +/tuner0/channel 5
 +/tuner0/program 20121
 +/tuner0/target udp://239.255.1.1:59001
 +/tuner1/channelmap au-bcast
 +/tuner1/channel 44
 +/tuner1/program 28753
 +/tuner1/target udp://239.255.1.2:59002
 +</code>
 +</WRAP>
 +
 +Tuning 2 DVB-C channels in Europe and streaming to a single PC, ignoring rejection messages from the PC due to a closed port:
 +
 +<WRAP indent>
 +<code>
 +/tuner0/channelmap eu-cable
 +/tuner0/channel 646
 +/tuner0/program 231
 +/tuner0/target udp://192.168.0.22:59001 no_clear
 +/tuner1/channelmap eu-cable
 +/tuner1/channel 770
 +/tuner1/program 24112
 +/tuner1/target udp://192.168.0.22:59002 no_clear
 +</code>
 +</WRAP>
 +
 +</WRAP>
 +===== HDHomeRun app =====
 +<WRAP indent>
 +
 +{{ :tech_guide.png?direct&400|}}
 +When using the TECH3-CC or TECH4 and later, the consumer [[:app|HDHomeRun app]] can be used, allowing the TECH to behave as a consumer HDHomeRun unit. To enable this the TECH will need to sync with the HDHomeRun guide server on the internet:
 +
 +  - Access the web interface of the TECH unit //(for example, <nowiki>http://192.168.0.49</nowiki> )//
 +  - Check the option **"Sync with guide server"**
 +  - All other features of the TECH can still be used in this mode.
  
 +<WRAP clear/>
  
 </WRAP> </WRAP>
  • Last modified: 2026/03/24 06:07