|  | @@ -12,6 +12,8 @@ from greaseweazle import error
 | 
	
		
			
				|  |  |  from greaseweazle.flux import Flux
 | 
	
		
			
				|  |  |  from greaseweazle import optimised
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +EARLIEST_SUPPORTED_FIRMWARE = (0, 23)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  ## Control-Path command set
 | 
	
		
			
				|  |  |  class ControlCmd:
 | 
	
		
			
				|  |  |      ClearComms      = 10000
 | 
	
	
		
			
				|  | @@ -159,6 +161,7 @@ class Unit:
 | 
	
		
			
				|  |  |          (self.major, self.minor, is_main_firmware,
 | 
	
		
			
				|  |  |           self.max_cmd, self.sample_freq, self.hw_model,
 | 
	
		
			
				|  |  |           self.hw_submodel, self.usb_speed) = x
 | 
	
		
			
				|  |  | +        self.version = (self.major, self.minor)
 | 
	
		
			
				|  |  |          # Old firmware doesn't report HW type but runs on STM32F1 only.
 | 
	
		
			
				|  |  |          if self.hw_model == 0:
 | 
	
		
			
				|  |  |              self.hw_model = 1
 | 
	
	
		
			
				|  | @@ -170,8 +173,8 @@ class Unit:
 | 
	
		
			
				|  |  |              return
 | 
	
		
			
				|  |  |          # We are running main firmware: Check whether an update is needed.
 | 
	
		
			
				|  |  |          # We can use only the GetInfo command if the firmware is out of date.
 | 
	
		
			
				|  |  | -        self.update_needed = (version.major != self.major
 | 
	
		
			
				|  |  | -                              or version.minor != self.minor)
 | 
	
		
			
				|  |  | +        self.update_needed = (self.version < EARLIEST_SUPPORTED_FIRMWARE or
 | 
	
		
			
				|  |  | +                              self.version > (version.major, version.minor))
 | 
	
		
			
				|  |  |          if self.update_needed:
 | 
	
		
			
				|  |  |              return
 | 
	
		
			
				|  |  |          # Initialise the delay properties with current firmware values.
 |