diff --git a/larpix/larpix.py b/larpix/larpix.py
index b41ce5e..f1f7684 100644
--- a/larpix/larpix.py
+++ b/larpix/larpix.py
@@ -174,14 +174,14 @@ class Configuration(object):
                 }
         # These registers store 32 bits over 4 registers each, and those
         # 32 bits correspond to entries in a 32-entry list.
-        complex_array_spec = [
+        self._complex_array_spec = [
                 (range(34, 38), 'csa_bypass_select'),
                 (range(38, 42), 'csa_monitor_select'),
                 (range(42, 46), 'csa_testpulse_enable'),
                 (range(52, 56), 'channel_mask'),
                 (range(56, 60), 'external_trigger_mask')]
         self._complex_array = {}
-        for addresses, label in complex_array_spec:
+        for addresses, label in self._complex_array_spec:
             for i, address in enumerate(addresses):
                 self._complex_array[address] = (label, i)
         # These registers each correspond to an entry in an array
@@ -202,6 +202,19 @@ class Configuration(object):
         for register_name in self.register_names:
             if getattr(self, register_name) != getattr(default_config, register_name):
                 d[register_name] = getattr(self, register_name)
+        # Attempt to simplify some of the long values (array values)
+        for (name, value) in d.items():
+            if (name in (label for _, label in self._complex_array_spec)
+                    or name == 'pixel_trim_thresholds'):
+                different_values = []
+                for ch, (val, default_val) in enumerate(zip(value, getattr(
+                    default_config, name))):
+                    if val != default_val:
+                        different_values.append({'channel': ch, 'value': val})
+                if len(different_values) < 5:
+                    d[name] = different_values
+                else:
+                    pass
         return d
 
     @property

diff --git a/test/test_larpix.py b/test/test_larpix.py
index f505c2f..b22de84 100644
--- a/test/test_larpix.py
+++ b/test/test_larpix.py
@@ -528,6 +528,27 @@ def test_configuration_get_nondefault_registers():
     expected['adc_burst_length'] = c.adc_burst_length
     assert c.get_nondefault_registers() == expected
 
+def test_configuration_get_nondefault_registers_array():
+    c = Configuration()
+    c.channel_mask[1] = 1
+    c.channel_mask[5] = 1
+    result = c.get_nondefault_registers()
+    expected = {
+            'channel_mask': [
+                { 'channel': 1, 'value': 1 },
+                { 'channel': 5, 'value': 1 }
+                ]
+            }
+    assert result == expected
+
+def test_configuration_get_nondefault_registers_many_changes():
+    c = Configuration()
+    c.channel_mask[:20] = [1]*20
+    result = c.get_nondefault_registers()
+    expected = { 'channel_mask': [1]*20 + [0]*12 }
+    assert result == expected
+
+
 def test_configuration_set_pixel_trim_thresholds():
     c = Configuration()
     expected = [0x05] * Chip.num_channels

Configuration.get_nondefault_registers() is too verbose for arrays
It should only return array entries that are different from the default. There are some decisions to be made about how to represent that in the dict, and when/whether to conclude that enough entries are different that the whole array should be shown anyway
test/test_larpix.py::test_configuration_get_nondefault_registers_array
test/test_larpix.py::test_FakeSerialPort_write test/test_larpix.py::test_FakeSerialPort_read test/test_larpix.py::test_FakeSerialPort_read_multi test/test_larpix.py::test_chip_str test/test_larpix.py::test_chip_get_configuration_packets test/test_larpix.py::test_chip_sync_configuration test/test_larpix.py::test_chip_export_reads test/test_larpix.py::test_chip_export_reads_no_new_reads test/test_larpix.py::test_chip_export_reads_all test/test_larpix.py::test_controller_save_output test/test_larpix.py::test_controller_load test/test_larpix.py::test_packet_bits_bytes test/test_larpix.py::test_packet_init_default test/test_larpix.py::test_packet_init_bytestream test/test_larpix.py::test_packet_bytes_zeros test/test_larpix.py::test_packet_bytes_custom test/test_larpix.py::test_packet_bytes_properties test/test_larpix.py::test_packet_export_test test/test_larpix.py::test_packet_export_data test/test_larpix.py::test_packet_export_config_read test/test_larpix.py::test_packet_export_config_write test/test_larpix.py::test_packet_set_packet_type test/test_larpix.py::test_packet_get_packet_type test/test_larpix.py::test_packet_set_chipid test/test_larpix.py::test_packet_get_chipid test/test_larpix.py::test_packet_set_parity_bit_value test/test_larpix.py::test_packet_get_parity_bit_value test/test_larpix.py::test_packet_compute_parity test/test_larpix.py::test_packet_assign_parity test/test_larpix.py::test_packet_has_valid_parity test/test_larpix.py::test_packet_set_channel_id test/test_larpix.py::test_packet_get_channel_id test/test_larpix.py::test_packet_set_timestamp test/test_larpix.py::test_packet_get_timestamp test/test_larpix.py::test_packet_set_dataword test/test_larpix.py::test_packet_get_dataword test/test_larpix.py::test_packet_get_dataword_ADC_bug test/test_larpix.py::test_packet_set_fifo_half_flag test/test_larpix.py::test_packet_get_fifo_half_flag test/test_larpix.py::test_packet_set_fifo_full_flag test/test_larpix.py::test_packet_get_fifo_full_flag test/test_larpix.py::test_packet_set_register_address test/test_larpix.py::test_packet_get_register_address test/test_larpix.py::test_packet_set_register_data test/test_larpix.py::test_packet_get_register_data test/test_larpix.py::test_packet_set_test_counter test/test_larpix.py::test_packet_get_test_counter test/test_larpix.py::test_configuration_get_nondefault_registers test/test_larpix.py::test_configuration_get_nondefault_registers_many_changes test/test_larpix.py::test_configuration_set_pixel_trim_thresholds test/test_larpix.py::test_configuration_get_pixel_trim_thresholds test/test_larpix.py::test_configuration_set_global_threshold test/test_larpix.py::test_configuration_get_global_threshold test/test_larpix.py::test_configuration_set_csa_gain test/test_larpix.py::test_configuration_get_csa_gain test/test_larpix.py::test_configuration_set_csa_bypass test/test_larpix.py::test_configuration_get_csa_bypass test/test_larpix.py::test_configuration_set_internal_bypass test/test_larpix.py::test_configuration_get_internal_bypass test/test_larpix.py::test_configuration_set_csa_bypass_select test/test_larpix.py::test_configuration_get_csa_bypass_select test/test_larpix.py::test_configuration_set_csa_monitor_select test/test_larpix.py::test_configuration_get_csa_monitor_select test/test_larpix.py::test_configuration_set_csa_testpulse_enable test/test_larpix.py::test_configuration_get_csa_testpulse_enable test/test_larpix.py::test_configuration_set_csa_testpulse_dac_amplitude test/test_larpix.py::test_configuration_get_csa_testpulse_dac_amplitude test/test_larpix.py::test_configuration_set_test_mode test/test_larpix.py::test_configuration_get_test_mode test/test_larpix.py::test_configuration_set_cross_trigger_mode test/test_larpix.py::test_configuration_get_cross_trigger_mode test/test_larpix.py::test_configuration_set_periodic_reset test/test_larpix.py::test_configuration_get_periodic_reset test/test_larpix.py::test_configuration_set_fifo_diagnostic test/test_larpix.py::test_configuration_get_fifo_diagnostic test/test_larpix.py::test_configuration_set_test_burst_length test/test_larpix.py::test_configuration_get_test_burst_length test/test_larpix.py::test_configuration_set_adc_burst_length test/test_larpix.py::test_configuration_get_adc_burst_length test/test_larpix.py::test_configuration_set_channel_mask test/test_larpix.py::test_configuration_get_channel_mask test/test_larpix.py::test_configuration_set_external_trigger_mask test/test_larpix.py::test_configuration_get_external_trigger_mask test/test_larpix.py::test_configuration_set_reset_cycles test/test_larpix.py::test_configuration_get_reset_cycles test/test_larpix.py::test_configuration_disable_channels test/test_larpix.py::test_configuration_disable_channels_default test/test_larpix.py::test_configuration_enable_channels test/test_larpix.py::test_configuration_enable_channels_default test/test_larpix.py::test_configuration_enable_external_trigger test/test_larpix.py::test_configuration_enable_external_trigger_default test/test_larpix.py::test_configuration_disable_external_trigger test/test_larpix.py::test_configuration_enable_testpulse test/test_larpix.py::test_configuration_enable_testpulse_default test/test_larpix.py::test_configuration_disable_testpulse test/test_larpix.py::test_configuration_disable_testpulse_default test/test_larpix.py::test_configuration_enable_analog_monitor test/test_larpix.py::test_configuration_disable_analog_monitor test/test_larpix.py::test_configuration_trim_threshold_data test/test_larpix.py::test_configuration_global_threshold_data test/test_larpix.py::test_configuration_csa_gain_and_bypasses_data test/test_larpix.py::test_configuration_csa_bypass_select_data test/test_larpix.py::test_configuration_csa_monitor_select_data test/test_larpix.py::test_configuration_csa_testpulse_enable_data test/test_larpix.py::test_configuration_csa_testpulse_dac_amplitude_data test/test_larpix.py::test_configuration_test_mode_xtrig_reset_diag_data test/test_larpix.py::test_configuration_sample_cycles_data test/test_larpix.py::test_configuration_test_burst_length_data test/test_larpix.py::test_configuration_adc_burst_length_data test/test_larpix.py::test_configuration_channel_mask_data test/test_larpix.py::test_configuration_external_trigger_mask_data test/test_larpix.py::test_configuration_reset_cycles_data test/test_larpix.py::test_configuration_to_dict test/test_larpix.py::test_configuration_from_dict test/test_larpix.py::test_configuration_write test/test_larpix.py::test_configuration_write_force test/test_larpix.py::test_configuration_read_absolute test/test_larpix.py::test_configuration_read_default test/test_larpix.py::test_configuration_read_local test/test_larpix.py::test_configuration_from_dict_reg_pixel_trim test/test_larpix.py::test_configuration_from_dict_reg_global_threshold test/test_larpix.py::test_configuration_from_dict_reg_csa_gain test/test_larpix.py::test_configuration_from_dict_reg_csa_bypass test/test_larpix.py::test_configuration_from_dict_reg_internal_bypass test/test_larpix.py::test_configuration_from_dict_reg_csa_bypass_select test/test_larpix.py::test_configuration_from_dict_reg_csa_monitor_select test/test_larpix.py::test_configuration_from_dict_reg_csa_testpulse_enable test/test_larpix.py::test_configuration_from_dict_reg_csa_testpulse_dac_amplitude test/test_larpix.py::test_configuration_from_dict_reg_test_mode test/test_larpix.py::test_configuration_from_dict_reg_cross_trigger_mode test/test_larpix.py::test_configuration_from_dict_reg_periodic_reset test/test_larpix.py::test_configuration_from_dict_reg_fifo_diagnostic test/test_larpix.py::test_configuration_from_dict_reg_sample_cycles test/test_larpix.py::test_configuration_from_dict_reg_test_burst_length test/test_larpix.py::test_configuration_from_dict_reg_adc_burst_length test/test_larpix.py::test_configuration_from_dict_reg_channel_mask test/test_larpix.py::test_configuration_from_dict_reg_external_trigger_mask test/test_larpix.py::test_configuration_from_dict_reg_reset_cycles test/test_larpix.py::test_controller_init_chips test/test_larpix.py::test_controller_get_chip test/test_larpix.py::test_controller_serial_read_mock test/test_larpix.py::test_controller_serial_write_mock test/test_larpix.py::test_controller_serial_write_read_mock test/test_larpix.py::test_packetcollection_getitem_int test/test_larpix.py::test_packetcollection_getitem_int_bits test/test_larpix.py::test_packetcollection_getitem_slice test/test_larpix.py::test_packetcollection_getitem_slice_bits test/test_larpix.py::test_packetcollection_origin test/test_larpix.py::test_packetcollection_to_dict test/test_larpix.py::test_packetcollection_from_dict