Patent Description:
Modern aircraft have systems controlled by software developed and approved under relevant certification processes. In order to ensure that these systems function properly, the software should be maintained in a configuration relevant to each particular aircraft. However, modifying the software installed in an aircraft system component may require removal of the component from the aircraft or use of special equipment. Therefore, there is room for improvement.

<CIT> relates to a computer implemented method, apparatus, and computer usable program product for managing loadable software aircraft parts.

<CIT> relates to systems and methods for delivering software and/or data updates to vehicles (such as aircraft) from remote locations.

According to a first aspect of the invention, a software update method for an aircraft is as claimed in claim <NUM>.

According to another aspect of the invention, a software update system for an aircraft is as claimed in claim <NUM>.

Some embodiments of the invention are as claimed in the dependent claims.

It will be noticed that throughout the appended drawings, like features are identified by like reference numerals.

There is described herein systems and methods for software update in an aircraft. The aircraft is equipped with at least one engine. <FIG> illustrates a gas turbine engine <NUM> of a type preferably provided for use in subsonic flight, generally comprising in serial flow communication a fan <NUM> through which ambient air is propelled, a compressor section <NUM> for pressurizing the air, a combustor <NUM> in which the compressed air is mixed with fuel and ignited for generating an annular stream of hot combustion gases, and a turbine section <NUM> for extracting energy from the combustion gases. High pressure rotor(s) <NUM> of the turbine section <NUM> are drivingly engaged to high pressure rotor(s) <NUM> of the compressor section <NUM> through a high pressure shaft <NUM>. Low pressure rotor(s) <NUM> of the turbine section <NUM> are drivingly engaged to the fan rotor <NUM> and to other low pressure rotor(s) (not shown) of the compressor section <NUM> through a low pressure shaft <NUM> extending within the high pressure shaft <NUM> and rotating independently therefrom.

The systems and methods described herein may be applied to aircraft having single or multiple (i.e., two or more) engines. Although illustrated as a turbofan engine, the gas turbine engine <NUM> may alternatively be another type of engine, for example a turboshaft engine, also generally comprising in serial flow communication a compressor section, a combustor, and a turbine section, and a fan through which ambient air is propelled. A turboprop engine may also apply. Other types of aircraft engines may also apply including, but not limited to, auxiliary power units (APUs), rotary engines, electric engines, and hybrid electric propulsion systems having a propeller driven in a hybrid architecture (series, parallel, or series/parallel) or turboelectric architecture (turboelectric or partial turboelectric).

<FIG> illustrates an example aircraft <NUM>, in accordance with one embodiment. At least one sensor <NUM> is provided per engine <NUM> of the aircraft <NUM>. The sensor(s) <NUM> may comprise a variety of data collection devices mounted in the engine <NUM> or other areas of the aircraft <NUM>. In some embodiments, the sensor(s) <NUM> are mounted directly on the engine <NUM> and the installation may be permanent or temporary. A permanent mount may be performed during manufacture of the engine <NUM>. When the aircraft <NUM> is assembled, the sensor(s) <NUM> may be connected to an existing aircraft harness (not shown). One or more additional cables, adapters, connectors, and/or harnesses may be added in order to connect the sensor(s) <NUM> to the existing aircraft harness. A temporary mount may be performed after manufacture of the engine <NUM> and/or after aircraft assembly, such as during aircraft maintenance.

The sensor(s) <NUM> may be configured to collect one or more measurements (also referred to herein as "measurement data" or "sensor data") associated with operation of the engine <NUM> and/or the aircraft <NUM>. The sensor(s) <NUM> are configured to acquire measurement(s) of parameter(s) of the engine <NUM> (referred to herein as "engine parameter(s)") and/or parameter(s) of the aircraft <NUM> (referred to herein as "aircraft parameter(s)") including, but not limited to, pressure (e.g., engine inlet total pressure, interstage pressure, engine pressure ratio or EPR), temperature (e.g., engine inlet total temperature, turbine inlet temperature, interstage temperature, engine exhaust gas temperature or EGT), altitude, speed (e.g., rotor speed of the engine's low-pressure rotor and high-pressure rotor, measured in Revolutions Per Minute (RPM)), acceleration, power, and torque. The sensor(s) <NUM> may also be configured to acquire measurement(s) of one or more parameters describing flight and ambient conditions (e.g., ambient pressure and temperature). It should however be understood that any other suitable measurements may be collected by the sensor(s) <NUM>. Indeed, the parameters measured by the sensor(s) <NUM> may vary according to the type of the engine <NUM> and/or aircraft <NUM>, and according to the application.

The sensor(s) <NUM> are illustratively configured to collect the one or more measurements during operation of the engine <NUM> and/or the aircraft <NUM> in-flight. The one or more measurement(s) may be collected continuously and in real-time, in order to provide a complete indication of the performance of the engine <NUM> and/or aircraft <NUM> during flight. The one or more measurement(s) may, alternatively or in addition, be collected at one or more points in time during the flight mission. In one embodiment, the measurement(s) may be acquired by the sensor(s) <NUM> during a stable cruise flight condition. As understood by those skilled in the art, a stable cruise condition corresponds to an operating condition of the aircraft <NUM> during which certain flight criteria, which may correspond to engine parameters and/or aircraft parameters, are attained. Stable cruise condition may be operator-specific. It should however be understood that the measurement(s) may be acquired by the sensor(s) <NUM> during any other suitable flight condition. For example, measurements(s) may be acquired during a constant climb phase of flight, which corresponds to a flight phase during which the aircraft <NUM> climbs to a given altitude at a constant climb rate.

The one or more measurements are then transmitted from the sensor(s) <NUM> to an aircraft-mounted electronic device (referred to herein as a "data acquisition and transmission unit") <NUM>, continuously or at regular intervals, via the existing aircraft harness and/or additional cables, adapters, connectors, and/or harnesses. The Aeronautical Radio Inc. (ARINC) <NUM> data transfer standard for aircraft avionics may be used. Other data standards may also be used, including, but not limited to, ARINC <NUM>, ARINC <NUM>, ARINC <NUM>, ARINC <NUM>, Controller Area Network (CAN), UART RS-<NUM>, Ethernet and MIL-STD-<NUM>. Alternatively, transmission of the data collected by the sensor(s) <NUM> is performed wirelessly. Therefore, the sensor(s) <NUM> may be configured for providing the measurement data to the data acquisition and transmission unit <NUM> via any suitable wired or wireless communication path (also referred to herein as a communication link).

As used herein, the term "wired" refers to the transfer of information (or data) between two points that are electrically connected (e.g., by an electrical conductor). When reference is made herein to a wired connection, link or path, it should be understood that any suitable technology may be used to establish the wired connection including, but not limited to, RS-<NUM>, USB, USB <NUM>, USB <NUM>, USB-C, Thunderbolt™, Ethernet, and the like. As used herein, the term "wireless" refers to the transfer of information (or data) between two points that are not connected by an electrical conductor. When reference is made herein to a wireless connection, link or path, it should be understood that any suitable wireless technology may be used to establish the wireless connection including, but not limited to, radio waves (e.g., VHF radio, HF radio), Bluetooth™, Zigbee™, Ultra-wideband (UWB), mobile broadband, wireless spread spectrum such as Wi-Fi (Standardized as IEEE <NUM> a, b, g, n, ac, ax), cellular data service, satellite communication (SATCOM), SATA, e-SATA, and the like.

In one embodiment, the data acquisition and transmission unit <NUM> may also receive data from an aircraft computer <NUM> and/or an engine computer <NUM>. This data will be collectively referred to as aircraft data, and denotes engine and/or aircraft performance parameters. The aircraft computer <NUM> may be an aircraft management controller (AMC), a flight management system (FMS), an aircraft digital computer system, or any other device used for computing inside an aircraft <NUM>. The engine computer <NUM> is an engine electronic controller (EEC). Data transmitted from the aircraft computer <NUM> and/or engine computer <NUM> to the data acquisition and transmission unit <NUM> (or vice versa) may be provided over a dedicated communication bus (e.g., a CAN bus) or any other existing communication system of the aircraft <NUM>.

Example data provided by the aircraft computer <NUM> comprises airspeed, altitude, stability, and position of the aircraft <NUM> at any point in time during a flight. Example data provided by the engine computer <NUM> comprises engine torque, engine speed, engine rating, engine torque stability, and engine compressor speed stability at any point in time during engine operation. The engine computer <NUM> may further be configured to detect fault(s) of the engine <NUM> (i.e. a physical fault that affects the thermodynamic performance of the engine <NUM> or a system fault) and accordingly generate engine fault data, which may also be sent to the data acquisition and transmission unit <NUM>. It should however be understood that engine fault detection may alternatively be performed in the data acquisition and transmission unit <NUM>, based on the data received from the sensor(s) <NUM>, engine computer <NUM>, and/or aircraft computer <NUM>. In some embodiments, the sensor(s) <NUM> may be connected to or read by the engine computer <NUM> and/or the aircraft computer <NUM> such that the measurement(s) collected by the sensor(s) <NUM> are received by the data acquisition and transmission unit <NUM> from the engine computer <NUM> and/or the aircraft computer <NUM> (instead of directly from the sensor(s) <NUM>).

The data received at the data acquisition and transmission unit <NUM> from the sensor(s) <NUM>, engine computer <NUM>, and/or aircraft computer <NUM> data is collectively referred to herein as "aviation data". In other words, the term "aviation data" refers to the sensor data received from the sensor(s) <NUM> and/or the aircraft data received from the aircraft computer <NUM> and/or the engine computer <NUM>. The aviation data may be collected from one or more locations of the aircraft <NUM> and received at the data acquisition and transmission unit <NUM> in real-time or at regular intervals during a flight mission of the aircraft <NUM>, based on specific operational conditions of the engine <NUM> and/or the aircraft <NUM>. In other embodiments, the data acquisition and transmission unit <NUM> receives data from the sensor(s) <NUM>, engine computer <NUM>, and/or aircraft computer <NUM> at the end of the aircraft's flight mission. As used herein, the term "mission" refers to a flight to perform a specific task. The mission may be defined by various parameters, such as duration, destination, cargo, and any flying parameters to be used during the mission, such as speed or maximum altitude. For example, operator X may have aircraft A and B fly at a speed of <NUM> RPM while aircraft C flies at a speed of <NUM> RPM. The value associated for the flight criteria "speed" may therefore differ between aircraft A and B and aircraft C. In some embodiments, operator X may define a unique set of flight criteria and associated values for each flight of an aircraft as a function of the specific flight parameters of a given flight, such as speeds, cruising altitudes, etc..

The engine <NUM> illustrated in <FIG> further comprises one or more line replaceable units (LRUs) <NUM> communicatively coupled to the data acquisition and transmission unit <NUM>. It should however be understood that, although not illustrated, at least some LRUs <NUM> may be mounted on the aircraft <NUM>. An LRU as in <NUM> is a modular component of the aircraft <NUM> or engine <NUM> that is designed to be removed and replaced at an operating location (also referred to as a "line") in the event of failure. In particular, LRUs may be stocked and are replaced quickly from nearby on-site inventories (i.e. at the field level), while failed or unserviceable LRUs undergo repair and overhaul actions in other locations(or lines). As such, the LRUs <NUM> may be removed and replaced as an aircraft line maintenance task, where maintenance can be performed on-wing. This may, for instance, alleviate the need to remove the entire engine <NUM> in order to get access to the part (i.e. the LRU <NUM> to be replaced) in a shop environment, upon disassembly. In one embodiment, the LRUs <NUM> comprise, but are not limited to, sensors as in <NUM> (e.g., blade angle feedback sensors, temperature sensors such as engine inlet temperature (T1) sensors), transducers (e.g., pressure transducers such as compressor exit pressure (P3) transducers, torque pressure transducers, fuel differential pressure transducers, main oil pressure transducers), valves and detectors (e.g., flow divider and dump valve, oil-to-fuel heater, ignition exciter), control units (e.g., propeller control unit, fuel control unit), and wiring harnesses (e.g., main electrical main harness, EEC wiring harness).

As can be seen in <FIG>, the data acquisition and transmission unit <NUM> is a communication system configured for receiving data (e.g., aviation data) from the sensor(s) <NUM>, the LRU(s) <NUM>, the engine computer <NUM>, the aircraft computer <NUM>, and/or other aircraft and engine systems, and transmitting the received data (raw or processed) to one or more systems on-board the aircraft <NUM> or off the aircraft <NUM>. The data acquisition and transmission unit <NUM> may take various forms, such as a Data Acquisition and Transmission Unit (DCTU), a Flight Data Acquisition Storage and Transmission (FAST™) system, as manufactured by Pratt & Whitney Canada, or any other computer-controlled unit. It should be understood that, while <FIG> illustrates (for clarity purposes) a single data acquisition and transmission unit <NUM>, more than one unit as in <NUM> may be provided.

The data acquisition and transmission unit <NUM> may comprise one or more antenna, one or more processors, and a memory (none shown). The processor(s) may be coupled to one or more data buses of the aircraft <NUM> for receiving the aviation data from the sensor(s) <NUM>, LRU(s) <NUM>, engine computer <NUM>, and/or aircraft computer <NUM>. As previously noted, the aviation data may be transmitted to and received at the data acquisition and transmission unit <NUM> using any suitable wired or wireless communication path. In some embodiments, the processor(s) of the data acquisition and transmission unit <NUM> may be configured to process the received aviation data. The data acquisition and transmission unit <NUM> may perform a conversion of the aviation data to a digitized form if received in analog form. It should however be understood that digitization of the aviation data may alternatively be performed by a dedicated device provided on the aircraft <NUM> separately from the data acquisition and transmission unit <NUM>. In some embodiments, the data acquisition and transmission unit <NUM> may be configured to store the received aviation data in memory.

The data acquisition and transmission unit <NUM> is also configured for receiving data (e.g., software data pertaining to a software update) from one or more client devices <NUM> via a communication link <NUM> and/or from one or more processing devices <NUM> via a communication link <NUM>, the communication links <NUM> and <NUM> being any suitable wired or wireless communication link. The one or more client device <NUM> and/or the one or more processing device <NUM> have access to the software data, as described further below. In one embodiment, the communication link <NUM> is wired (e.g. a USB connection) and the communication link <NUM> is wireless. In another embodiment, both the communication link <NUM> and the communication link <NUM> are wireless. Other embodiments may apply. The data acquisition and transmission unit <NUM> may be configured to communicate with more than one client device <NUM> (or more than one data processing device <NUM>), although not necessarily with more than one type of client device <NUM> (or more than one type of data processing device <NUM>) at one time.

As used herein, the term "software data" refers to a software package received at the data acquisition and transmission unit <NUM> for use in updating a software configuration of one or more target devices ( engine computer <NUM> and optionally LRU(s) <NUM>) of the aircraft <NUM>. As used herein, the term "target device" refers to components or systems, comprising an engine computer <NUM>, installed on the aircraft <NUM> (e.g., provided on the engine <NUM>) and that rely on software to perform their function. The data acquisition and transmission unit <NUM> behaves as a hosting platform on which the software package is ran to update the software configuration of the target device(s). In some embodiments, the data acquisition and transmission unit <NUM> may be configured to store the entirety of the software data in a memory (or other data storage means) associated with the data acquisition and transmission unit <NUM>. In other embodiments, the data acquisition and transmission unit <NUM> may be configured to perform software updates without storing the entirety of the software data in memory. In this case, the data acquisition and transmission unit <NUM> may access the software data sin partial blocks on demand over a network connection (e.g., communication link <NUM> or <NUM> or a connection to a cloud storage medium, not shown). Still, it is desirable for at least part of the software data to be stored in the memory associated with the data acquisition and transmission unit <NUM> prior to the software data being provided to the target device(s).

The software package includes one or more software files containing one or more updates to the software configuration of the target device(s) and a software loader configured to be executed by the data acquisition and transmission unit <NUM> to load the one or more software files into the target device(s). The software package may further contain one or more identifiers (e.g., one or more part numbers) indicating the target device(s) into which the software files are to be loaded. The data acquisition and transmission unit <NUM> may therefore modify the software configuration of more than one target device, simultaneously or in sequence.

As used herein, the term "load", "loading", "install" or "installing" refers to the process of transferring and programming software into a target device (without removal of the target device from the aircraft <NUM>), thus changing the configuration of the software controlling the operation and functionality of the target device. The term "configuration" refers to a particular combination of versions of a given software, with each version referring to a specific item of the software at a given revision status. The software configuration of the target device may not have the latest version of the software installed, thus requiring a modification in order to improve the operation or functionality of the target device or ensure that the target device's software configuration remains compliant with applicable aircraft regulations. The software modification (also referred to herein as an "update") may comprise an enhancement to the current software version or provision of a new version of the software.

The client device(s) <NUM> comprise any portable or handheld electronic communication device, such as a smartphone, a desktop computer, a portable (or laptop) computer, a tablet, a hand-held electronic device, an electronic flight bag, or the like, adapted to communicate over the communication link <NUM>. In one embodiment, the client device(s) <NUM> are external to the aircraft <NUM> and are provided for maintenance (e.g., troubleshooting) purposes. In other embodiments, the client device(s) <NUM> may be provided on the aircraft <NUM>. Maintenance personnel may use their client device <NUM> to access the data acquisition and transmission unit <NUM> via the communication link <NUM> and retrieve the aviation data therefrom for the purpose of performing maintenance on the engine <NUM> to troubleshoot malfunctions. Fault codes and associated indication messages contained in the aviation data collected by the data acquisition and transmission unit <NUM> may be accessed and used to direct maintenance efforts, which may be performed while the aircraft <NUM> is on the ground. In addition, maintenance personnel may use their client device <NUM> to distribute (e.g., during maintenance activities) software updates to the data acquisition and transmission unit <NUM> for loading in at least one target device provided on the aircraft <NUM>. one target device whose software configuration is to be modified is the engine computer <NUM>.

In one embodiment, the software data may be distributed to the data acquisition and transmission unit <NUM> from a client device <NUM> via a data storage device <NUM> (also referred to as "software media") physically coupled to the client device <NUM>. The data storage device <NUM> may be removable (i.e. removably coupled to the client device <NUM>) and includes, but is not limited to, a flash memory device (e.g., a Secure Digital (SD) / microSD card, a USB key or drive), a compact disc (CD), a memory card, or the like). A single data storage device may store several software packages (e.g., several software loaders and several software files) for use on multiple target devices of the aircraft <NUM>. For example, a software package (pertaining to a software update for the engine computer <NUM>) may be provided to an operator on a USB key. The operator may then connect their client device <NUM> (e.g., their laptop) to the data acquisition and transmission unit <NUM> (via communication link <NUM>, which may be wired or wireless) and insert the USB key in a corresponding USB port of the client device <NUM>. The software package is then transferred to the data acquisition and transmission unit <NUM>, which in turn executes the software loader to load the software files into the engine computer <NUM> and to modify the configuration of the software controlling operation and functionality of the engine computer <NUM>. In other embodiments, distribution of the software package may involve no data storage device as in <NUM>. Instead, the software package may be stored in a memory (e.g., a non-volatile memory) of the client device <NUM> for subsequent retrieval by the data acquisition and transmission unit <NUM> when the software update is to be performed. In this embodiment, the communication link <NUM> between the client device <NUM> and the data acquisition and transmission unit <NUM> may be wireless.

Still referring to <FIG>, in some embodiments, the software data may be distributed to the data acquisition and transmission unit <NUM> from one or more electronic device(s) (also referred to herein as data processing device(s)) <NUM> that comprise one or more servers or other computing device(s) located remotely from the aircraft <NUM> (i.e. off-aircraft). The data processing device(s) <NUM> may comprise a series of servers corresponding, but not limited, to a microserver, a web server, an application server, and a database server. In one embodiment, the data processing device(s) <NUM> is a server provided on the ground (referred to herein as a "ground server"). It should however be understood that the methods and systems described herein may use cloud computing, such that the data processing device(s) <NUM> may be a cloud server. Indeed, the systems and methods described herein may support Internet of Things (IoT) connectivity with a cloud data analytics platform. Distributed computing may also apply, such that the data processing device(s) <NUM> may comprise a set of two or more servers. Any other suitable data processing device may apply. These servers are all represented by data processing device(s) <NUM> in <FIG>. In addition, it should be understood that, while the one or more data processing device(s) <NUM> are illustrated as being remote from the aircraft <NUM>, the data processing device(s) <NUM> may, in some embodiments, be provided on-board the aircraft <NUM> (e.g., as part of the data acquisition and transmission unit <NUM>).

Each data processing device <NUM> is configured to access the data acquisition and transmission unit <NUM> via the communication link <NUM> and retrieve the aviation data. The data processing device <NUM> may be configured to store the aviation data in a data warehouse <NUM> communicatively coupled to the data processing device <NUM>. The data processing device <NUM> may then subsequently uses the data from the data warehouse <NUM> for further processing. In some embodiments, the data processing device <NUM> also has access to or stores (e.g., in the data warehouse <NUM>) one or more software packages accessible to the data acquisition and transmission unit <NUM> via the communication link <NUM>. In response to a user-initiated or system-initiated command, the data acquisition and transmission unit <NUM> may retrieve the software package from the data processing device <NUM> for subsequent loading to the target device(s) (the engine computer <NUM> and optionally the LRU(s) <NUM>).

The data warehouse <NUM> described herein may be provided as collections of data or information organized for rapid search and retrieval by a computer. It is structured to facilitate storage, retrieval, modification, and deletion of data in conjunction with various data-processing operations. The data warehouse <NUM> may consist of a file or sets of files that can be broken down into records, each of which consists of one or more fields. Database information may be retrieved through queries using keywords and sorting commands, in order to rapidly search, rearrange, group, and select the field. The data warehouse <NUM> may be any organization of data on a data storage medium, such as one or more servers. It should be understood that the data warehouse <NUM> may also be provided in a cloud-based server-less environment.

After having obtained the software data (from the one or more client devices <NUM> and/or from the one or more processing devices <NUM>), the data acquisition and transmission unit <NUM> loads the software data into the engine computer <NUM>, to which the data acquisition and transmission unit <NUM> is communicatively coupled (e.g., in a bidirectional manner).

In one embodiment, the data acquisition and transmission unit <NUM> executes the software loader to load the one or more software files into the target device(s), causing the target device(s) to be programmed according to the one or more software files to modify the software configuration of the target device(s). In some embodiments, the target device(s) are programmed upon the data acquisition and transmission unit <NUM> reading the contents (i.e. program instructions) of the software files into the memory of the target device(s). It should however be understood that, in other embodiments, the data acquisition and transmission unit <NUM> installs the software files into the target device(s) without the software files being stored in the memory of the target device(s). In one embodiment, execution of the software loader by the data acquisition and transmission unit <NUM> triggers a reboot of the target device (the engine computer <NUM>) where the target device is placed in a programming mode. When in the programming mode, the target device is able to receive the software files from the data acquisition and transmission unit <NUM> and to store the software files in memory. The target device is configured to validate the software files upon receipt, prior to storage thereof in memory. The validation process may imply verifying, using operator-defined rules, that the software files meet operator specifications and have not been altered during transfer from one location to another (e.g., from the data acquisition and transmission unit <NUM> to the target device). The data acquisition and transmission unit <NUM> are configured to monitor the status of the software loading process and to cause the target device to exit the programming mode after the software files are stored in the memory associated with the target device.

In some embodiments, execution of the software loader by the data acquisition and transmission unit <NUM> triggers an error detection process that is performed to detect and manage any possible communication error that may occur during the software update. By monitoring the software loading process in real-time upon execution of the software loader, the data acquisition and transmission unit <NUM> may be configured to detect any such error (e.g., resulting in failure to load the software files into the target device) and to initiate, upon detection of the error, a retry procedure. In one embodiment, the error may be a handshake error, a communication interruption, a connectivity interruption, or a cable disconnect between the data acquisition and transmission unit <NUM> to the target device (the engine computer <NUM>). In some embodiments, the data acquisition and transmission unit <NUM> may output a control signal comprising instructions to cause at least one corrective action to be performed on the target device to recover from the communication error. Initiation of the retry procedure may thus entail outputting instructions to the user (e.g., via the client device <NUM>) to prompt the user to verify the connection (e.g., the EEC wiring harness) between the data acquisition and transmission unit <NUM> to the target device and power cycle the target device. The user may be prompted to repeat the retry procedure (i.e. perform the action on the target device) a predetermined number of times (e.g., five times) until the error is solved. In other embodiments, the data acquisition and transmission unit <NUM> may cause a block of software data to be resent, for instance in the event of a checksum error. The data acquisition and transmission unit <NUM> may alternatively or in addition output the control signal to the target device to cause the target device to automatically take action to recover from the communication error. For example, the control signal may cause the target device to reboot automatically. If the error persists after the predetermined number of times, the data acquisition and transmission unit <NUM> declares the software loading process a failure and aborts the process.

The transfer of the software package to the data acquisition and transmission unit <NUM>, the execution of the software loader, and the installing of the software files into the target device may occur automatically without any human intervention (e.g., upon connection of a client device <NUM> and/or of a data processing device <NUM> to the data acquisition and transmission unit <NUM>, when wireless communication is available at a destination point of the aircraft <NUM>). In some embodiments, the transfer of the software package to the data acquisition and transmission unit <NUM>, the execution of the software loader, and the installing of the software files into the target device may occur in response to a system-initiated command generated by any suitable system or component of the aircraft <NUM>. For example, the system-initiated command may be generated by the engine computer <NUM>, the aircraft computer <NUM>, the LRU(s) <NUM>, or by the data acquisition and transmission unit <NUM>, in response to any one of the engine computer <NUM>, the LRU(s) <NUM>, or the data acquisition and transmission unit <NUM> being powered on. Alternatively, the transfer of the software package to the data acquisition and transmission unit <NUM>, the execution of the software loader, and the loading of the software files into the target device may occur in response to a command which is user-initiated. The user-initiated command may be placed by an operator using a suitable input means (e.g., a keyboard, touchscreen, or the like) associated with the client device <NUM>. The user-initiated command may alternatively be generated as a result of a user (e.g., a pilot) actuating a button, switch, knob, or other input or control means provided in the cockpit (or other suitable location) of the aircraft <NUM>.

In some embodiments, the data acquisition and transmission unit <NUM> may be configured to generate in real-time, during execution of the software loader and loading of the software files, notifications (e.g., visual and/or audio) indicative of the completion status of the software update being performed on the target device. The notifications may then be output to the client device(s) <NUM> using any suitable output means (e.g., a screen, a speaker, or the like) associated with the client device(s) <NUM> or any suitable communication means (e.g., text message, email, or the like). For instance, a graphical user interface may be generated and presented to an operator (e.g., via a screen of the client device <NUM>, or via a cockpit display provided on the aircraft <NUM> and controlled by the aircraft computer <NUM>) throughout the software update process to provide the notifications on completion status and present final results. The operator may alternatively use their client device <NUM> to access, using a suitable web browser, a secured web portal or a webpage (e.g. an engine maintenance webpage) to monitor the progress of the software update.

With reference to <FIG>, an example of a computing device <NUM> is illustrated. For simplicity only one computing device <NUM> is shown but more computing devices <NUM> operable to exchange data may apply. The computing devices <NUM> may be the same or different types of devices. Each of the data acquisition and transmission unit (reference <NUM> in <FIG>), the engine computer (reference <NUM> in <FIG>), the aircraft computer (reference <NUM> in <FIG>), the client device(s) <NUM>, and the data processing device(s) <NUM> may be implemented with one or more computing devices <NUM>. The computing device <NUM> may also be used to implement the method described herein (e.g., the method <NUM> of FIG. 4A and FIG.

The instructions <NUM> may be implemented in a high level procedural or object oriented programming or scripting language, or a combination thereof, to communicate with or assist in the operation of a computer system, for example the data acquisition and transmission unit <NUM>. Alternatively, the instructions <NUM> may be implemented in assembly or machine language. The language may be a compiled or interpreted language. The instructions <NUM> may be readable by a general or special-purpose programmable computer.

The methods and systems described herein may be implemented in a high level procedural or object oriented programming or scripting language, or a combination thereof, to communicate with or assist in the operation of a computer system, for example the computing device <NUM>. Alternatively, the methods and systems described herein may be implemented in assembly or machine language. The language may be a compiled or interpreted language. Program code for implementing the methods and systems described herein may be stored on a storage media or a device, for example a ROM, a magnetic disk, an optical disc, a flash drive, or any other suitable storage media or device. The program code may be readable by a general or special-purpose programmable computer for configuring and operating the computer when the storage media or device is read by the computer to perform the procedures described herein. Embodiments of the methods and systems described herein may also be considered to be implemented by way of a non-transitory computer-readable storage medium having a computer program stored thereon. The computer program may comprise computer-readable instructions which cause a computer, or more specifically the processing unit <NUM> of the computing device <NUM>, to operate in a specific and predefined manner to perform the functions described herein, for example those described in the method <NUM>.

Referring now to <FIG> in addition to <FIG>, the processing unit <NUM> illustratively comprises an input unit <NUM>, a software loading unit <NUM>, an error detection unit <NUM>, and an output unit <NUM>. The processing unit <NUM> may be provided as part of the data acquisition and transmission unit <NUM>. Although the input unit <NUM>, software loading unit <NUM>, error detection unit <NUM>, and output unit <NUM> are illustrated as being separate from one another, it should be understood that units <NUM>, <NUM>, <NUM>, and <NUM> may be integrated together into one or more units.

The input unit <NUM> illustratively comprises a data interface (not shown) configured to receive, directly or indirectly, data from the sensor(s) <NUM>, the engine computer <NUM>, the LRU(s) <NUM>, the aircraft computer <NUM> (e.g., via one or more data buses, connectors, and the like, as described herein above), the client device(s) <NUM> (e.g., via communication link <NUM>), and/or the data processing device(s) <NUM> (e.g., via communication link <NUM>). The received data may comprise aviation data and software data, as described herein above. In some embodiments, the input unit <NUM> may be configured to digitize the data if received in analog form.

The software data is sent to the software loading unit <NUM> for loading into one or more target devices (the engine computer <NUM> and optionally the LRU(s) <NUM>). The software loading unit <NUM> is configured to implement the functionality of the software loader described herein with reference to <FIG>, in response to a user-initiated or system-initiated command. In particular, the software loading unit <NUM> is configured to trigger a reboot of the target device(s) which places the target device(s) in a programming mode that enables the target device(s) to receive the software files and, in some embodiments, to store the software files in memory. The target device(s) are then programmed according to the one or more software files (to modify the software configuration of the target device(s)), for instance upon the software loading unit <NUM> reading the contents of the software files into the memory of the target device(s). The software loading unit <NUM> is also configured to cause the target device(s) to exit the programming mode after the software files have been loading into one or more target devices.

In some embodiments, the error detection unit <NUM> is configured to be ran simultaneously with the software loading unit <NUM> and may be combined therewith as a single unit. The error detection unit <NUM> is configured to detect and manage communication or handshake errors that may occur during the software update performed by the software loading unit <NUM>. As described herein with reference to <FIG>, upon detection of an error, the error detection unit <NUM> may be configured to trigger a retry procedure that prompts the user to resolve the detected error (e.g., by verifying wiring connections or power cycling the target device). During the software loading process and/or the error detection process, the software loading unit <NUM> and/or the error detection unit <NUM> may generate one or more notifications that are then sent to the output unit <NUM>. The output unit <NUM> in turn causes the notifications to be output (e.g., to the client device(s) <NUM> or to a cockpit display, as described herein above).

Referring now to <FIG>, a method <NUM> for software update in an aircraft, such as the aircraft <NUM> of <FIG>, will now be described in accordance with one embodiment. The method <NUM> is performed at the data acquisition and transmission unit (reference <NUM> of <FIG>). The method <NUM> comprises the step <NUM> of obtaining software data comprising a software loader and one or more software files containing an update to a software configuration of the at least one target device. The software data may be obtained at step <NUM> from the client device(s) <NUM> and/or from the data processing device(s) <NUM>, via any suitable wired or wireless communication path, as described herein above with reference to <FIG>. In one embodiment, the step <NUM> of obtaining the software data comprises communicatively coupling the client device(s) <NUM> and/or the data processing device(s) <NUM> (having access to the software data) via a wired and/or a wireless communication link and executing a function at the computing device for obtaining the software data from the client device(s) <NUM> and/or the data processing device(s) <NUM>. The method <NUM> also comprises the step <NUM> of executing, at the data acquisition and transmission unit <NUM>, the software loader to install the one or more software files into the at least one target device and thereby modify the software configuration of the at least one target device according to the update. Step <NUM> may include performing an error detection procedure as described herein with reference to <FIG>. Notifications may be output (e.g., to the client device(s) <NUM>) as step <NUM> is being performed, to provide an indication of a status of the software update process.

In some embodiments, the systems and methods described herein may allow to update aircraft-mounted target devices (engine controllers) by using connectivity of the target devices to an aircraft-mounted computing device (the data acquisition and transmission unit which is part of the engine build of material). This may alleviate the need for special equipment (e.g., cables, power supply, custom portable electronic device, and the like) to perform software updates in the aircraft since target devices may be reprogrammed directly from the aircraft-mounted computing device. In addition, the operator's tasks during the software update process may be limited to performing power cycles of the target device via the aircraft cockpit and to verify (e.g., via the cockpit display) that the software update is reported as successful (e.g., the proper software version is installed). These tasks may be performed upon the operator being prompted to do so by the systems and methods described herein. As such, in some embodiments, the software update process may require no special training and may prove more reliable. A fleet reprogramming campaign may thus be implemented to update multiple target devices (EECs) in service on an operator's aircrafts with reduced logistic effort and costs.

In addition, in the event of an unsuccessful software loading process caused by a communication error, the systems and methods described herein may alleviate the need for removal and replacement of a target device with a new target device having a new software version already loaded.

Claim 1:
A software update method (<NUM>) for an aircraft (<NUM>), the method (<NUM>) comprising:
obtaining (<NUM>) software data at a data acquisition and transmission unit (<NUM>) mounted to the aircraft (<NUM>), the data acquisition and transmission unit (<NUM>) being configured to receive aircraft data denoting aircraft engine and/or aircraft performance parameters from an engine electronic controller (<NUM>), the software data comprising a software loader and one or more software files containing an update to a software configuration of the engine electronic controller (<NUM>) mounted to the aircraft (<NUM>) and communicatively coupled to the data acquisition and transmission unit (<NUM>); and
executing (<NUM>), at the data acquisition and transmission unit (<NUM>), the software loader to install the one or more software files into the engine electronic controller (<NUM>) and thereby modify the software configuration of the engine electronic controller (<NUM>) according to the update, wherein the executing (<NUM>) the software loader comprises placing the engine electronic controller (<NUM>) in a programming mode for the engine electronic controller (<NUM>) to receive the one or more software files, validate the one or more software files upon receipt prior to storage into a memory associated with the engine electronic controller (<NUM>), and store the one or more software files in the memory associated with the engine electronic controller (<NUM>);
monitoring, at the data acquisition and transmission unit (<NUM>), a software loading process during the executing of the software loader installing the one or more software files into the engine electronic controller (<NUM>); and
exiting the programming mode after the software files are stored in the memory associated with the engine electronic controller (<NUM>).