IP Library Granted Patent US 12,443,511
Granted Patent B2
US 12,443,511 · App. 18/381,498 · Granted Oct 14, 2025

Systems and methods for remote debugging

Inventors: Rakesh Eluvan Periyaeluvan (Madurai, IN); Gopikumar Ranganathan (Madurai, IN); Amit Kumar (Bangalore, IN)
Assignee: DISH Network Technologies India Private Limited
G06F11/3636G06F9/5055H04L67/02H04L67/125
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,443,511
App. No.
18/381,498
Granted
Oct 14, 2025
Kind
B2
Abstract

Systems and methods for remote debugging perform remote debugging of a receiving device, such as a set-top box or other connected media player, even when the receiving device is located behind a firewall. The receiving device has a persistent outbound connection with a message server. Since it is an outbound connection, it connects across firewall restrictions. A remote debug machine sends a message via the message server to the receiving device over a network. The message carries the command/operation to be executed by the receiving device. The receiving device, which receives the command, executes the command and sends the output of the command to a debug data upload server to which the remote debug machine has access.

Claims (43)

1. A method for remote debugging of a receiving device, the method comprising:

sending over a computer network, by a remote debugging computer that is remote from the receiving device and separated from the receiving device by a firewall, a message to the receiving device via a message server that has an existing persistent outbound connection that was established by the receiving device across restrictions of the firewall, the message sent through the existing persistent outbound connection that was established by the receiving device across restrictions of the firewall, and the message carrying a command to be executed by the receiving device; and

receiving over a computer network by the remote debugging computer via a debug data upload server that is different hardware than the message server and is remote from the remote debugging computer and from the message server, in response to execution of the command by the receiving device, output from the receiving device resulting from execution of the command;

wherein:

the message server is separate hardware from both the receiving device and the remote debugging computer and maintains the existing persistent outbound connection with the receiving device rather than the remote debugging computer;

the received output from the receiving device resulting from execution of the command includes debug files from the receiving device;

the method further comprises:

after the persistent outbound connection was established by the receiving device across restrictions of the firewall and before the remote debugging computer sending the message to the receiving device via the message server carrying the command to be executed by the receiving device, the receiving device stopping operating or operating incorrectly due to a system malfunction, software error, or customer error; and

providing technical assistance in real time using the remote debugging computer by at least obtaining information regarding operation of the receiving device remotely in real time in order to resolve problems in real time experienced by the receiving device regarding the receiving device stopping operating or operating incorrectly due to the system malfunction, software error, or customer error and remotely performing debugging of the receiving device in real time.

2. The method of claim 1 wherein the command comprises a tcpdump.

3. The method of claim 1 , wherein the command collects CPU utilization information from the receiving device.

4. The method of claim 1 , wherein the command reboots the receiving device.

5. The method of claim 1 wherein the received output from the receiving device resulting from execution of the command includes CPU utilization data regarding CPU utilization of a CPU of the receiving device.

6. The method of claim 1 wherein the command is to reboot the receiving device.

7. A system for remote debugging of a remote receiving device comprising:

at least one processor; and

at least one memory coupled to the at least one processor, the at least one memory having instructions stored thereon that, when executed by the at least one processor, cause the receiving device to:

establish, by the receiving device, a persistent outbound connection from the receiving device to a message server that is remote from the receiving device and remote from a remote debugging computer and across restrictions of a firewall that separates the remote debugging computer from the receiving device;

after establishing, by the receiving device, the persistent outbound connection from the receiving device to the message server across restrictions of the firewall that separates the remote debugging computer from the receiving device, receive over a computer network, from the remote debugging computer that is remote from the receiving device and the message server and is separated from the receiving device by a firewall, a message via the message server that has an existing persistent outbound connection to the receiving device across restrictions of the firewall, the message carrying a command to be executed by the receiving device;

execute the command; and

in response to execution of the command, send over a computer network to a debug data upload server that is different hardware than the message server and is remote from the receiving device and from the remote debugging computer, output from the receiving device resulting from execution of the command;

wherein:

the message server is separate hardware from both the receiving device and the remote debugging computer and the persistent outbound connection is maintained with the message server rather than with the remote debugging computer;

the received output from the receiving device resulting from execution of the command includes debug files from the receiving device;

the instructions further cause:

after the persistent outbound connection was established by the receiving device across restrictions of the firewall and before the remote debugging computer sending the message to the receiving device via the message server carrying the command to be executed by the receiving device, the receiving device stopping operating or operating incorrectly due to a system malfunction, software error, or customer error; and

providing technical assistance in real time using the remote debugging computer by at least obtaining information regarding operation of the receiving device remotely in realtime in order to resolve problems in real time experienced by the receiving device regarding the receiving device stopping operating or operating incorrectly due to the system malfunction, software error, or customer error and remotely performing debugging of the receiving device in real time.

8. The system of claim 7 wherein the command is to dump a network trace.

9. The system of claim 8 wherein the output from the receiving device resulting from execution of the command includes data representing the dump of the network trace.

10. The system of claim 9 wherein the output from the receiving device that includes data representing the dump of the network trace is sent via an HTTPs/SFTP connection.

11. The system of claim 7 wherein the output from the receiving device resulting from execution of the command includes CPU utilization data regarding CPU utilization of a CPU of the receiving device.

12. The system of claim 7 wherein the command is to reboot the receiving device.

13. A non-transitory computer-readable storage medium having computer-executable instructions stored thereon that, when executed by at least one physical processor, cause the at least one processor to perform operations comprising:

cause a persistent outbound connection to be established by a receiving device from the receiving device to a message server that is remote from the receiving device and remote from a debugging computer and across restrictions of a firewall that separates the remote debugging computer from the receiving device;

after establishing, by the receiving device, the persistent outbound connection from the receiving device to the message server across restrictions of the firewall that separates the remote debugging computer from the receiving device, cause the remote debugging computer, that is remote from the receiving device and separated from the receiving device by the firewall, to send a message to the receiving device via the message server, the message carrying a command to be executed by the receiving device;

cause a debug data upload server that is different hardware than the message server and is remote from the remote debugging computer and from the message server in response to execution of the command by the receiving device, to receive output from the receiving device resulting from execution of the command; and

cause the debug data upload server to send the output from the receiving device to the remote debugging computer;

wherein:

the message server is separate hardware from both the receiving device and the remote debugging computer and maintains the persistent outbound connection with the receiving device rather than the remote debugging computer; and

the operations further comprise:

after the persistent outbound connection was established by the receiving device across restrictions of the firewall and before the remote debugging computer sending the message to the receiving device via the message server carrying the command to be executed by the receiving device, the receiving device stopping operating or operating incorrectly due to a system malfunction, software error, or customer error; and

providing technical assistance in real time using the remote debugging computer by at least obtaining information regarding operation of the receiving device remotely in real time in order to resolve problems in real time experienced by the receiving device regarding the receiving device stopping operating or operating incorrectly due to the system malfunction, software error, or customer error and remotely performing debugging of the receiving device in real time.

14. The non-transitory computer-readable storage medium of claim 13 wherein the output from the receiving device resulting from execution of the command includes CPU utilization data regarding CPU utilization of a CPU of the receiving device.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 18, 2023
From: PERIYAELUVAN, RAKESH ELUVAN; RANGANATHAN, GOPIKUMAR; KUMAR, AMIT
To: SLING MEDIA PVT LTD
Reel/Frame 065272/0375 →
CHANGE OF NAME Recorded Oct 18, 2023
From: SLING MEDIA PRIVATE LIMITED
To: DISH NETWORK TECHNOLOGIES INDIA PRIVATE LIMITED
Reel/Frame 065272/0430 →
Continuity (2)
Continuation 16360926 · Mar 21, 2019
Related Publication 20240045789A1 · Feb 8, 2024
References Cited (46)
US 6393475B1 · Leong · 2002 [cited by examiner]
US 6742141B1 · Miller · 2004 [cited by examiner]
US 6928464B2 · Appiah · 2005 [cited by examiner]
US 6950936B2 · Subramaniam · 2005 [cited by examiner]
US 6973482B2 · Mohammed · 2005 [cited by examiner]
US 7673180B1 · Chen · 2010 [cited by examiner]
US 7870153B2 · Croft · 2011 [cited by examiner]
US 10474518B1 · Rupavatharam · 2019 [cited by examiner]
US 10725890B1 · Goyal · 2020 [cited by examiner]
US 11829277B2 · Periyaeluvan · 2023 [cited by examiner]
US 20020169980A1 · Brownell · 2002 [cited by examiner]
US 20040123271A1 · Bindewald · 2004 [cited by examiner]
US 20040199629A1 · Bomer · 2004 [cited by examiner]
US 20050021772A1 · Shedrinsky · 2005 [cited by examiner]
US 20050060124A1 · Chen · 2005 [cited by examiner]
US 20050198380A1 · Panasyuk · 2005 [cited by examiner]
US 20050267779A1 · Lee · 2005 [cited by examiner]
US 20060031407A1 · Dispensa · 2006 [cited by examiner]
US 20060168136A1 · Bethlehem · 2006 [cited by examiner]
US 20060195894A1 · Nita · 2006 [cited by examiner]
US 20060195895A1 · Ben-Shachar · 2006 [cited by examiner]
US 20070233804A1 · Palekar · 2007 [cited by examiner]
US 20080172574A1 · Fisher · 2008 [cited by examiner]
US 20080270612A1 · Malakapalli · 2008 [cited by examiner]
US 20100058057A1 · Sutherland · 2010 [cited by examiner]
US 20110276684A1 · Singh · 2011 [cited by examiner]
US 20130124926A1 · Cowie · 2013 [cited by examiner]
US 20130219363A1 · Wu · 2013 [cited by examiner]
US 20140245266A1 · Sun · 2014 [cited by examiner]
US 20140336795A1 · Asenjo · 2014 [cited by examiner]
US 20160028688A1 · Chizhov · 2016 [cited by examiner]
US 20160077894A1 · Scheerer · 2016 [cited by examiner]
US 20160285976A1 · Chan · 2016 [cited by examiner]
US 20170161167A1 · Obermiller · 2017 [cited by examiner]
US 20170201488A1 · Krywaniuk · 2017 [cited by examiner]
US 20180060452A1 · Esterkin · 2018 [cited by examiner]
US 20180063077A1 · Tumuluru · 2018 [cited by examiner]
US 20180129580A1 · Merkle · 2018 [cited by examiner]
US 20180220006A1 · Uruma · 2018 [cited by examiner]
US 20190044793A1 · Chew · 2019 [cited by examiner]
US 20190044996A1 · Weiman · 2019 [cited by examiner]
US 20190158371A1 · Dillon · 2019 [cited by examiner]
US 20190215688A1 · Zavesky · 2019 [cited by examiner]
US 20200034572A1 · Mundra · 2020 [cited by examiner]
US 20200185091A1 · Davis · 2020 [cited by examiner]
US 20200186427A1 · Chunduru Venkata · 2020 [cited by examiner]