Patent Publication Number: US-10334120-B2

Title: Printing apparatus to which optional unit is connected, program update method for printing apparatus, and storage medium

Description:
BACKGROUND OF THE INVENTION 
     Field of the Invention 
     The present invention relates to a printing apparatus to which an optional unit is connected, a program update method for the printing apparatus, and a storage medium, and more particularly to a technique for updating a program of the optional unit for expanding functions of a multifunction peripheral or the like. 
     Description of the Related Art 
     In a general multifunction peripheral, a controller unit for controlling the overall operation of the multifunction peripheral includes a CPU (Central Processing Unit), while some of optional units that are used by being connected to the main unit of the multifunction peripheral are also equipped with CPUs, respectively. The CPUs of such optional units realize various optional functions, such as a FAX function and a finishing function, by reading out and executing programs associated with the functions, e.g. from ROMs of the optional units. To this end, when such an optional unit is connected to the apparatus main unit, a program executed by the CPU of the optional unit is required to be updated such that the program is compatible with a program executed by the CPU of the controller unit in association therewith. 
     Further, there is a case where even when the hardware configuration of an optional unit is the same, the optional unit is operated by being connected to an apparatus main unit having a different function, by rewriting the program of the optional unit. 
     To prevent occurrence of problems due to incompatibility between a version of the program of the apparatus main unit and a version of the program of the optional unit, there has been proposed, for example, a method disclosed in Japanese Patent Laid-Open Publication No. 2012-008864. This publication discloses the method in which the latest firmware (program) of a camera (apparatus main unit) is downloaded in advance to a cradle (optional unit) for the camera, and when the camera is connected, if the version of the firmware for the camera is old, the firmware is automatically updated. 
     Further, Japanese Patent Laid-Open Publication No. 2012-203801 proposes a method in which when a vehicle-mounted apparatus and a communication apparatus are caused to operate in cooperation with each other, the communication apparatus downloads, based on the version numbers of respective programs installed on the apparatuses for cooperative operation, one of a combination of appropriate versions of the programs, which is to be updated, from a server, and thereby performs upgrading of the to-be-updated one of the programs. 
     An operation to be realized by an optional unit is sometimes different depending on the different hardware configuration and functions of the apparatus main unit, and it is necessary to enable the optional unit to accommodate a difference in the operation by modifying a program of the optional unit. For example, in the case of a finisher unit, to prevent stackability of a discharge tray thereof from being degraded due to sheet curl caused by differences in the amount of toner application and sheet discharge speed from an apparatus main unit (image forming apparatus), a modification is made to a program that controls the sheet conveying speed and the distance between adjacent sheets being conveyed. In the case of a scanner unit, it is necessary to prepare programs that are compatible with different printing performances and scanning speeds of different apparatus main units, respectively. 
     However, in general, the program storage capacity of the ROM of an optional unit is small, so that it is difficult to store a multiplicity of programs in the ROM. For this reason, to adapt the optional unit to the apparatus main unit different in function, it is necessary to cause the ROM to store a program compatible with the apparatus main unit on an as-needed basis. As a consequence, if an optional unit similar in shape but different in the specifications of a program stored in its ROM is erroneously connected to the apparatus main unit, there is a fear that the optional unit cannot exhibit a desired function or performance. Further, there is a possibility that the program of the apparatus main unit and the program of the optional unit are not compatible with each other, sometimes causing an unexpected operation, and even a failure of the optional unit. 
     The method disclosed in Japanese Patent Laid-Open Publication No. 2012-008864, in which the version of the program of the camera connected to the cradle is updated when the program is old, can always update the program for the camera to a later version. 
     However, the disclosed method does not provide control of notifying, in a case where the program of the optional unit is different from a program expected by a user, the user of this fact, and updating the program on an as-needed basis. Therefore, it is sometimes impossible to cope with the case where it is desired that an optional unit having the same hardware is caused to store a different program to thereby cause the same to perform a different operation. 
     The method disclosed in Japanese Patent Laid-Open Publication No. 2012-203801, in which the communication apparatus capable of communicating with a server downloads one of an appropriate combination of versions of the programs whereby the to-be-updated program is updated, has an inconvenience that e.g. in an environment where the communication apparatus is not connected to a network, it is sometimes impossible to execute program update so as to cause the programs of the apparatuses to have an appropriate combination of respective program versions. 
     SUMMARY OF THE INVENTION 
     The present invention provides a technique that guarantees update of a program of an optional unit, and prevents a malfunction of the optional unit from being caused by erroneous attachment of the optional unit by a user or a service technician. 
     In a first aspect of the present invention, there is provided a printing apparatus comprising a printing unit configured to perform printing, a connection unit configured to connect a finisher unit that performs finishing processing on sheets on which printing has been performed, to the printing apparatus, a first acquisition unit configured to acquire hardware identification information from the finisher unit, a first determination unit configured to determine, based on the hardware identification information acquired by the first acquisition unit, whether or not hardware of the finisher unit is compatible with a program of the printing apparatus, a second acquisition unit configured to acquire program identification information from the finisher unit, in a case where it is determined by the first determination unit that the hardware of the finisher unit is compatible with the program of the printing apparatus, a second determination unit configured to determine, based on the program identification information acquired by the second acquisition unit, whether or not a program of the finisher unit is associated with the program of the printing apparatus, a comparison unit configured to compare a version of the program of the finisher unit and a version of the program of the printing apparatus, in a case where it is determined by the second determination unit that the program of the finisher unit is associated with the program of the printing apparatus, and an update unit configured to update the program of the finisher unit to a version thereof compatible with the version of the program of the printing apparatus, in a case where it is determined from a result of comparison by the comparison unit that a combination of the version of the program of the finisher unit and the version of the program of the printing apparatus is not a proper combination. 
     In a second aspect of the present invention, there is provided a program update method for a printing apparatus including a printing unit configured to perform printing and a connection unit configured to connect a finisher unit that performs finishing processing on sheets on which printing has been performed, to the printing apparatus, comprising acquiring hardware identification information from the finisher unit, determining, based on the acquired hardware identification information, whether or not hardware of the finisher unit is compatible with a program of the printing apparatus, acquiring program identification information from the finisher unit, in a case where it is determined that the hardware of the finisher unit is compatible with the program of the printing apparatus, determining, based on the acquired program identification information, whether or not a program of the finisher unit is associated with the program of the printing apparatus, comparing a version of the program of the finisher unit and a version of the program of the printing apparatus, in a case where it is determined that the program of the finisher unit is associated with the program of the printing apparatus, and updating the program of the finisher unit to a version thereof compatible with the version of the program of the printing apparatus, in a case where it is determined, from a result of said comparing, that a combination of the version of the program of the finisher unit and the version of the program of the printing apparatus is not a proper combination. 
     In a third aspect of the present invention, there is provided a non-transitory computer-readable storage medium storing a computer-executable program for executing a program update method for a printing apparatus including a printing unit configured to perform printing and a connection unit configured to connect a finisher unit that performs finishing processing on sheets on which printing has been performed, to the printing apparatus, wherein the program update method comprises acquiring hardware identification information from the finisher unit, determining, based on the acquired hardware identification information, whether or not hardware of the finisher unit is compatible with a program of the printing apparatus, acquiring program identification information from the finisher unit, in a case where it is determined that the hardware of the finisher unit is compatible with the program of the printing apparatus, determining, based on the acquired program identification information, whether or not a program of the finisher unit is associated with the program of the printing apparatus, comparing a version of the program of the finisher unit and a version of the program of the printing apparatus, in a case where it is determined that the program of the finisher unit is associated with the program of the printing apparatus, and updating the program of the finisher unit to a version thereof compatible with the version of the program of the printing apparatus, in a case where it is determined, from a result of said comparing, that a combination of the version of the program of the finisher unit and the version of the program of the printing apparatus is not a proper combination. 
     According to the present invention, the update of a program of an optional unit is guaranteed, and a malfunction of the optional unit is prevented from being caused by erroneous attachment of the optional unit by a user or a service technician. 
     Further features of the present invention will become apparent from the following description of exemplary embodiments (with reference to the attached drawings). 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  is a schematic block diagram of a multifunction peripheral as a printing apparatus according to a first embodiment of the present invention. 
         FIG. 2  is a diagram of program groups stored in a ROM of a controller unit appearing in  FIG. 1 . 
         FIG. 3  is a flowchart of an optional unit program update process performed by the multifunction peripheral shown in  FIG. 1 . 
         FIGS. 4A to 4C  are diagrams of examples of screens displayed on a console section, in which  FIG. 4A  shows a firmware update confirmation screen displayed in a step of the optional unit program update process in  FIG. 3 ,  FIG. 4B  shows an error screen displayed in a step of the optional unit program update process in  FIG. 3 , and  FIG. 4C  shows an update setting screen for setting update of a program of the optional unit. 
         FIG. 5  is a flowchart of an optional unit program update process performed by a multifunction peripheral as a printing apparatus according to a second embodiment of the present invention. 
     
    
    
     DESCRIPTION OF THE EMBODIMENTS 
     The present invention will now be described in detail below with reference to the accompanying drawings showing embodiments thereof. 
       FIG. 1  is a schematic block diagram of a multifunction peripheral as a printing apparatus according to a first embodiment of the present invention. 
     Referring to  FIG. 1 , the multifunction peripheral  100  is comprised of a controller unit  110 , a console section  130 , a printer unit  140 , a scanner unit  150 , a FAX unit  160 , and a finisher unit  170 . 
     The controller unit  110  is configured to control the overall operation of the multifunction peripheral  100 , and includes components described hereafter. 
     A CPU  111  loads programs stored in a ROM  112  into a RAM  113 , and executes the programs. The ROM  112  stores not only the programs but also apparatus information, such as license information, apparatus configuration information, and program version information. An HDD (Hard Disk Drive)  114  stores e.g. image data received from outside. 
     The programs executed by the CPU  111  include a program corresponding to a printer controller  212 , referred to hereinafter. This program converts image data stored in the HDD  114  to image data printable by the printer unit  140 , and stores the image data in the HDD  114  again. Further, the programs executed by the CPU  111  include a program corresponding to a scanner controller  213 , referred to hereinafter. This program reads image data using the scanner unit  150 , and stores the read image data in the HDD  114 . 
     An image analysis board  115  analyzes image data read by the scanner unit  150 , reads copy inhibition information or the like from the image data, and then transmits an instruction e.g. of whether to print the image data by the printer unit  140 , to the CPU  111 . 
     A console section interface  116  provides interface for transmitting an instruction input by a user of the multifunction peripheral  100  via the console section  130 , to the CPU  111 . Further, the console section interface  116  receives details of processing for changing a display on the console section  130  from the CPU  111 , and transmits the details of the processing to the console section  130 . 
     The console section  130  includes a liquid crystal display equipped with a touch panel function, a keyboard, and so forth, and receives an operation instruction from a user. 
     A printer interface  117  provides interface for connection between the controller unit  110  and the printer unit  140 . 
     The printer unit  140  performs printing on a sheet based on image data transferred from the HDD  114  via the printer interface  117 . 
     The finisher unit  170  performs various types of finishing processing on sheets printed by the printer unit  140 . Examples of the finishing processing include stapling processing, punching processing, saddle-stitch bookbinding processing, and so forth, which are performed on sheets. 
     A scanner interface  118  provides interface for connection between the controller unit  110  and the scanner unit  150 . 
     The scanner unit  150  reads an image on an original as image data using a line sensor comprised of CCDs (Charge Coupled Devices). The scanner unit  150  transfers the read image data to the HDD  114  via the scanner interface  118 , for storage therein. The image data stored in the HDD  114  can be printed by the printer unit  140 . Further, by printing the image data read by the scanner unit  150  using the printer unit  140 , it is possible to copy the image data. 
     A USB-Host interface  119  provides interface for connection between the controller unit  110  and the FAX unit  160 . 
     The FAX unit  160  performs FAX transmission via a FAX line  185  based on image data transferred from the HDD  114  via the USB-Host interface  119 . Further, the FAX unit  160  generates image data based on data received via the FAX line  185 , and transfers the image data to the HDD  114  via the USB-Host interface  119 . The image data stored in the HDD  114  is printed on a sheet by the printer unit  140 . Note that the USB-Host interface  119  can also be connected to an external USB device  184 . The external USB device  184  is a USB memory or a USB keyboard, for example. 
     A network interface  120  connects the controller unit  110  to a LAN  181 , and performs communication with a PC  182  and a server  183  on the LAN. 
     The PC  182  is capable of performing various operations, such as transmission of image data to the multifunction peripheral  100 , and operation of devices of the multifunction peripheral  100  via a Web browser. 
     Latest versions of programs necessary for multifunction peripherals and the like are always uploaded to the server  183 . The multifunction peripheral  100  can send a request to the server  183  to thereby download latest versions of programs for update. Although in the present embodiment, a description will be given of a case in which programs stored in the ROM are updated to latest versions thereof by acquiring the latest versions from the server  183 , it is also possible to update the programs without connecting the multifunction peripheral  100  to the server  183 . 
     It is possible to connect the multifunction peripheral  100  to the server  183  via the LAN  181  to download an update file necessary for updating programs. To download the update file, it is preferable to use a method by HTTP (Hyper Text Transfer Protocol) or FTP (File Transfer Protocol), but protocols to be used are not limited to these. 
     The printer unit  140 , the scanner unit  150 , the FAX unit  160 , and the finisher unit  170  are provided with CPUs  141 ,  151 ,  161 , and  171 , and ROMs  142 ,  152 ,  162 , and  172 , respectively. These CPUs and ROMs are not so large in scale as the CPU  111  and the ROM  112  of the controller unit  110 . The CPUs read programs stored in respective associated ones of the ROMs, and perform device control and communication with other devices. When performing program upgrade, each of the programs stored in the ROMs  142 ,  152 ,  162 , and  172  can also be a target to be upgraded. 
     The printer unit  140 , the scanner unit  150 , the FAX unit  160 , and the finisher unit  170  are configured to be capable of being removably attached to the main unit of the multifunction peripheral  100 . Note that the finisher unit  170  is configured to be capable of being removably attached only to the printer unit  140 . 
     When an optional unit is connected to the main unit of the multifunction peripheral  100 , there is a possibility that a combination of a program stored in a ROM of the optional unit for operation thereof and a program stored in the ROM  112  of the controller unit  110  for operation thereof is not a guaranteed combination. 
     In such a case, it is necessary to update at least one of the program stored in the ROM of the optional unit and the program stored in the ROM  112  of the controller unit  110 . Note that in the following description, the printer unit  140 , the scanner unit  150 , the FAX unit  160 , and the finisher unit  170  are each generically referred to as an optional unit. 
     Next, program groups stored in the ROM  112  of the controller unit  110  will be described with reference to  FIG. 2 . 
       FIG. 2  is a diagram of the program groups stored in the ROM  112  of the controller unit  110 . The illustrated program groups are a main system program group  210  and an option unit program group  220 . 
     Referring to  FIG. 2 , the main system program group  210  is comprised of programs for realizing various functions of the multifunction peripheral  100 . 
     A console section controller  211  is a program for controlling the console section interface  116  and the console section  130 . Similarly, the aforementioned printer controller  212  is the program for controlling the printer interface  117  and the printer unit  140 . The aforementioned scanner controller  213  is the program for controlling the scanner interface  118  and the scanner unit  150 . A USB controller  214  is a program for controlling the USB-Host interface  119 , and the FAX unit  160  and the external USB device  184  which are connected to the USB-Host interface  119 . 
     An application controller  215  is a program group not for directly controlling external devices but for realizing the various functions of the multifunction peripheral  100 . The functions realized by the application controller  215  include httpd (Hyper Text Transfer Protocol Daemon), lpd (Line Printer Daemon), a Web browser function, an apparatus information distribution function, and so forth. 
     A hardware identification section  216  is a program for determining whether or not an optional unit connected to the multifunction peripheral  100  is compatible with a program of the main system program group  210 . More specifically, when the optional unit is connected, the hardware identification section  216  acquires a hardware identifier stored in the ROM of the optional unit, and determines whether or not the optional unit is compatible with the program of the main system program group  210 , i.e. whether or not the acquired hardware identifier matches a hardware identifier stored in the ROM  112  in association with the program of the main system program group  210 . If there is a match, it indicate that the optional unit can be properly operated by the program of the main system program group  210 . The hardware identifier (hardware identification information) acquired from the optional unit is used for identifying the optional unit so as to know whether or not the optional unit can be normally operated in combination with the functions of the multifunction peripheral  100 , which is determined based on the configuration of the optional unit, such as the storage capacity of the ROM, sheet feed speed and sheet discharge speed, and the number of sheet discharge trays. 
     An optional unit program identification section  217  is a program for acquiring a model identifier, stored in the ROM of the optional unit and indicative of a model corresponding to the program stored in the optional unit, and determining whether or not the acquired model identifier matches a model identifier stored in the ROM  112  in association with the program of the main system program group  210 . If there is a match, it indicates that the program stored in the ROM of the optional unit is compatible with the program of the main system program group  210 . While the above-described hardware identifier is identification information for identifying whether or not the hardware arrangement of the optional unit is compatible with the program of the main system program group  210 , the model identifier is program identification information for identifying which program of the main system program group  210  is corresponding to the program stored in the optional unit. 
     A program version comparison section  218  is a program for comparing a version of the program stored in the ROM of the optional unit, and a version of the program which is stored in the optional unit program group  220  of the ROM  112 , for update of the program of the optional unit. 
     A program update processor  219  is a program for performing, when it is determined that program update is required, a program update process for updating programs stored in the ROM  112  of the controller unit  110  and the ROM of the optional unit. 
     The optional unit program group  220  is comprised of a printer unit program  221 , a scanner unit program  223 , a finisher unit program  222 , and a FAX unit program  224 . These programs are programs for use in respective optional units associated therewith for operation thereof, and are stored in the ROM  112  for updating the programs stored in the optional units. Hereafter, these programs are referred to as “optional unit programs” so as to distinguish them from those stored in the associated optional units. 
     The above-mentioned programs of the optional unit program group  220  stored in the ROM  112  are compatible with processing realized by the various programs ( 211  to  215 ) of the main system program group  210 , and before shipment of the multifunction peripheral  100 , optimum versions thereof at the time are stored in the ROM  112 . 
     When the program update process is performed in response to an instruction from the user, the multifunction peripheral  100  acquires latest versions of programs of the main system program group  210  and latest versions of optional unit programs, e.g. from the server  183 , thereby updating the programs of the main system program group  210  to the latest versions thereof, and the optional unit programs of the optional unit program group  220  to the latest versions thereof. 
     Note that the optional unit program of an optional unit that is connectable but is not currently connected to the controller unit  110  is also updated. By thus updating such an optional unit program, when the optional unit is additionally connected later, the program stored in the ROM of the connected optional unit can be updated to the latest version using the program stored in the ROM  112 . 
       FIG. 3  is a flowchart of an optional unit program update process performed by the multifunction peripheral  100 . This process is realized by the CPU  111  which executes the programs read from the ROM  112 . 
     First, when the main unit of the multifunction peripheral  100  is powered on (step S 301 ), the CPU  111  determines whether or not an optional unit is connected to the multifunction peripheral  100  (step S 302 ). If it is confirmed that an optional unit is connected to the multifunction peripheral  100 , the process proceeds to a step S 303 , wherein the CPU  111  acquires a hardware identifier stored in the ROM of the optional unit in association with the program of the optional unit. The program may include the hardware identifier, and the CPU  111  may acquire the hardware identifier included in the program. Note that if it is confirmed that a plurality of optional units are connected to the multifunction peripheral  100 , hardware identifiers are acquired from the respective optional units. 
     Next, in a step S 304 , the CPU  111  determines using the hardware identification section  216  whether or not the hardware identifier of the optional unit, acquired in the step S 303 , matches any of hardware identifiers stored in the ROM  112 . If it is determined that the hardware identifier of the optional unit does not match any of the hardware identifiers stored in the ROM  112 , the CPU  111  determines that an improper optional unit is connected to the multifunction peripheral  100  by mistake, and the process proceeds to a step S 314 , wherein an error screen shown in  FIG. 4B  is displayed on the console section  130 , followed by terminating the present process. 
     As described above, if it is determined that the connected optional unit is not configured to be capable of being operated in cooperation with the main system, an error notification is transmitted to the user. To cause the apparatus main unit to correctly operate, it is required to connect a proper optional unit or stop connection of the optional unit. Thus, it is possible to prevent a malfunction of the optional unit from being caused by erroneous attachment of an optional unit by a user or a service technician. 
     On the other hand, if it is determined in the step S 304  that the hardware identifier matches any of the hardware identifiers stored in the ROM  112 , the process proceeds to a step S 305 , wherein the CPU  111  acquires a model identifier stored in the ROM of the optional unit in association with the program of the optional unit. The program of the optional unit may include the model identifier, and the CPU  111  may acquire the model identifier included in the program. 
     Next, in a step S 306 , the CPU  111  determines using the optional unit program identification section  217  whether or not the model identifier of the optional unit acquired in the step S 305  matches any of model identifiers stored in the ROM  112 . For example, assuming that a model identifier associated with the program of the main system program group  210  indicates “Model A”, and the model identifier acquired from the optional unit connected to the multifunction peripheral  100  indicates “Model B”, the answer to the question of the step S 306  is negative (NO), and the process proceeds to a step S 308 . On the other hand, if it is determined in the step S 306  that the model identifier matches any of the model identifiers, the process proceeds to a step S 307 . 
     Even when there is a match in hardware identifier in the step S 304 , but there is no match in model identifier in the step S 306 , it is possible to cause the apparatus main unit to operate, by rewriting the program. In this case, to cause the multifunction peripheral  100  to normally operate, it is required to rewrite the program for “Model B” stored in the ROM of the optional to the program for “Model A”. 
     Therefore, in the step S 308 , the CPU  111  determines whether or not the optional unit program (program for the optional unit) is stored in the optional unit program group  220  of the ROM  112 . If it is determined due to some reason that the optional unit program is not stored in the optional unit program group  220 , the process proceed to the step S 314 , wherein the CPU  111  causes the error screen shown in  FIG. 4B  to be displayed on the console section  130 , followed by terminating the present process. 
     If it is determined in the step S 308  that the optional unit program is stored in the ROM  112 , the process proceeds to a step S 309 , wherein the CPU  111  causes a notification screen shown in  FIG. 4A  to be displayed on the console section  130  for notifying the update of the program (firmware) of the optional unit. 
     The notification screen shown in  FIG. 4A  is displayed when it is determined that by rewriting the optional unit program, it is possible to cause the optional unit and the multifunction peripheral  100  to operate with a combination of the program of the optional unit and the program of the main system program group  210 . In the illustrated example, an update button  401  is disposed, but neither cancel button nor skip button is disposed in order to prevent the multifunction peripheral  100  from continuing to be used in a state in which the models are mismatched. The screen shown in  FIG. 4A  is displayed in order to notify the user of the necessity of updating a program, and of the fact that the functions of the multifunction peripheral  100  cannot be used for a predetermined time period during the upgrade of the program to a later version. As described above, even if it is determined that the program of the optional unit is incompatible with the program of the main system program group  210 , if it is determined by the hardware identification section  216  that the optional unit connected to the multifunction peripheral  100  is compatible with the program of the main system program group  210 , the optional unit can be made operable by properly updating the program stored in the ROM of the optional unit. 
     Referring again to  FIG. 3 , the process proceeds from the step S 309  to a step S 313 , wherein the CPU  111  performs the program update process by replacing the program stored in the ROM of the optional unit by the optional unit program stored in the ROM  112 , i.e. overwriting the program stored in the ROM of the optional unit with the optional unit program, using the program update processor  219 , followed by terminating the present process. 
     Similar to the step S 308 , in the step S 307 , the CPU  111  determines whether or not the optional unit program is stored in the ROM  112 . If the optional unit program is not stored in the ROM  112 , the process proceeds to the step S 314 , wherein the error display is performed. 
     On the other hand, if it is determined in the step  307  that the optional unit program is stored in the ROM  112 , the process proceeds to a step S 310 . 
     In the step S 310 , the CPU  111  causes the program version comparison section  218  to perform comparison between the version of the optional unit program in the optional unit program group  220  and the version of the program stored in the ROM of the optional unit, to thereby determining whether or not a combination of the version of the program of the main system program group  210  and the version of the program of the optional unit is a proper combination. If it is determined that the combination of the versions of the programs is not proper, the present process is terminated. On the other hand, if it is determined that the combination of the versions of the programs is not proper, the process proceeds to a step S 311 , wherein the CPU  111  causes a notification screen (not shown) to be displayed on the console section  130  for notifying the user of the fact that the combination of the versions of the programs is not proper. 
     Next, in a step S 312 , the CPU  111  determines whether or not an update instruction has been received from the user via the console section  130 . If the update instruction has been received, the process proceeds to the step S 313 . 
     In the step S 313 , the CPU  111  causes the program update processor  219  to update the program stored in the ROM of the optional unit, using the optional unit program of the option unit program group  210  stored in the ROM  112 , i.e. overwrite the program stored in the ROM of the optional unit with the optional unit program. 
     If the update instruction has not been received in the step S 312 , the operation of the multifunction peripheral  100  is continued without performing the update process for updating the program stored in the ROM of the optional unit. Note that the notification screen indicating that the combination of the versions of the programs is not proper is displayed, and hence if the user who has connected the optional unit to the multifunction peripheral  100  has any means for updating the programs, the user can also correct the mismatch of the versions of the programs by performing an update operation. If the mismatch of the versions of the programs is not corrected, the optional unit program update process in  FIG. 3  is performed next time when the main unit of the multifunction peripheral  100  is powered on, and hence the notification to the effect that the versions of the programs do not match is made in the step S 311  again. 
     According to the above-described embodiment, it is determined whether or not the optional unit is compatible with the main system, based on the hardware identifier acquired from the optional unit. If it is determined that the optional unit is compatible with the main system, a model identifier associated with the program is acquired from the optional unit, and it is determined based on the model identifier whether or not the model of the optional unit and the model of the main system match each other. If it is determined that the models match each other, the version of the optional unit program and the version of the program of the main system are compared. If it is determined based on the result of the comparison that the combination of the version of the optional unit program and that of the program of the main system is not proper, the program of the optional unit is updated using the optional unit program which is compatible with the main system and is stored in the ROM  112 , according to an instruction from the user. On the other hand, if it is determined that the models do not match, the program of the optional unit is updated using the optional unit program stored in the ROM  112 . This guarantees the update of the program of the optional unit such that the operations of a model different in functions are realized, by causing a different program to be stored in the optional unit, and prevents a malfunction from being caused by erroneous attachment of the optional unit by a user or a service technician. Further, when the apparatus main unit and the optional unit are connected, the operation of the optional unit can be guaranteed by rewiring the program thereof, and hence it can be expected that the management of the optional unit is more efficiently performed. 
     Although in the above-described embodiment, the program update process is performed according to an update instruction from the user in the step S 312  in  FIG. 3 , this is not limitative. For example, determination whether or not to update programs may be performed according to conditions set by the user in advance on a setting screen as shown in  FIG. 4C . 
       FIG. 4C  shows an example of a screen for setting version upgrade/version downgrade of the version of a program stored in the ROM of the optional unit. 
     When the user desires that a proper combination of the program stored in the ROM of the optional unit and a program of the main system program group  210  is guaranteed, the user operates a setting selection section  601  on the setting screen shown in  FIG. 4C , to thereby select an option “perform version upgrade/version downgrade”. On the other hand, in a case where an optional unit storing a program of a later version is intentionally connected to the apparatus main unit, in order to prevent execution of the update (version downgrade, in this case, of the program of the optional unit), the user operates the setting selection section  601  to select an option “perform only version upgrade”. Further, when desiring to maintain a combination of the version of a program of the main system program group  210  and the version of a program stored in the ROM of the optional unit, the user operates the setting selection section  601  to select an option “do not update”. Further, when the optional unit has been connected before and the operation of the optional unit has been confirmed, and hence the user desires to use the optional unit as it is, the user o selects the option “do not update” by operating the setting selection section  601 . 
     Next a second embodiment of the present invention will be described. The second embodiment is distinguished from the above-described first embodiment in that a process is added in which the multifunction peripheral  100  acquires the programs of the latest versions from the server  183 . In the following, the same components as those of the first embodiment are denoted by the same reference numerals, and description thereof is omitted. The following description is given only of different points from the first embodiment. 
       FIG. 5  is a flowchart of an optional unit program update process performed by the printing apparatus according to the second embodiment of the present invention. The present process is realized by the CPU  111  which executes a program read out from the ROM  112 . Note that steps S 701  to S 706  in  FIG. 5  are the same as the steps S 301  to S 306  in  FIG. 3 , and hence description thereof is omitted. 
     In a step S 707 , the CPU  111  determines whether or not the multifunction peripheral  100  is communicably connected to the server  183 . If it is confirmed that the multifunction peripheral  100  is communicably connected to the server  183 , the process proceeds to a step S 711 . 
     In the step S 711 , the CPU  111  acquires the respective latest versions of the program of the main system program group  210  and the program stored in the ROM of the optional unit, and stores the latest versions of the programs in the ROM  112 . Then, the process proceeds to a step S 712 . The step S 712  to a step S 714  are the same as the steps S 310  to S 312  in  FIG. 3 . In other words, there is performed the same processing as performed when it is determined in the step S 307  that the optional unit program is stored in the main system. The latest versions of the programs necessary for the upgrade thereof have always been uploaded to the server, and hence, differently from the step S 312 , in a step S 715 , the program of the main system program group  210  and/or the program of the optional unit are updated to the latest versions, using the latest versions of the programs downloaded in the step S 711 . 
     Similar to the step S 707 , in a step S 708 , the CPU  111  determines whether or not the multifunction peripheral  100  is communicably connected to the server  183 . If it is confirmed that the multifunction peripheral  100  is communicably connected to the server  183 , the process proceeds to a step S 709 , wherein the CPU  111  acquires the latest versions of the programs of the main system program group  210  and the program of the optional unit. Then, in a step S 710 , the CPU  111  displays, on the console section  130 , the notification screen shown in  FIG. 4A  for notifying the update of the program (firmware) of the optional unit. After that, in a step S 715 , the CPU  111  causes the program update processor  219  to perform update processing for updating the program stored in the ROM of the optional unit, and if necessary, the program of the main system program group  210 . 
     Note that similar to the steps S 307  and S 308  in  FIG. 3 , in the steps S 707  and S 708 , if it is not confirmed that the multifunction peripheral  100  is communicably connected to the server  183 , the error screen is displayed (step S 716 ). 
     The screens displayed on the console section  130  in the respective steps S 710  and S 716  are the same screens shown in  FIGS. 4A and 4B , respectively. More specifically, in the step S 710 , the notification screen ( FIG. 4A ) for notifying the user of the program update processing, and in the step S 716 , the notification screen ( FIG. 4B ) for notifying the user of the error. 
     According to the above-described embodiment, it is possible to obtain the same advantageous effects as provided by the first embodiment. 
     Although in the above-described first and second embodiments, the description has been given of the case where the optional unit program update process shown in each of  FIGS. 3 and 5  is performed when the apparatus main unit is first powered on, the process may be performed when it is detected that a new optional unit has been connected to the apparatus main unit. 
     Other Embodiments 
     Embodiment(s) of the present invention can also be realized by a computer of a system or apparatus that reads out and executes computer executable instructions (e.g., one or more programs) recorded on a storage medium (which may also be referred to more fully as a ‘non-transitory computer-readable storage medium’) to perform the functions of one or more of the above-described embodiment(s) and/or that includes one or more circuits (e.g., application specific integrated circuit (ASIC)) for performing the functions of one or more of the above-described embodiment(s), and by a method performed by the computer of the system or apparatus by, for example, reading out and executing the computer executable instructions from the storage medium to perform the functions of one or more of the above-described embodiment(s) and/or controlling the one or more circuits to perform the functions of one or more of the above-described embodiment(s). The computer may comprise one or more processors (e.g., central processing unit (CPU), micro processing unit (MPU)) and may include a network of separate computers or separate processors to read out and execute the computer executable instructions. The computer executable instructions may be provided to the computer, for example, from a network or the storage medium. The storage medium may include, for example, one or more of a hard disk, a random-access memory (RAM), a read only memory (ROM), a storage of distributed computing systems, an optical disk (such as a compact disc (CD), digital versatile disc (DVD), or Blu-ray Disc (BD)™), a flash memory device, a memory card, and the like. 
     While the present invention has been described with reference to exemplary embodiments, it is to be understood that the invention is not limited to the disclosed exemplary embodiments. The scope of the following claims is to be accorded the broadest interpretation so as to encompass all such modifications and equivalent structures and functions. 
     This application claims the benefit of Japanese Patent Application No. 2014-100379 filed May 14, 2014 which is hereby incorporated by reference herein in its entirety.