Changing entity base field settings Changing entity base field settings
I have a custom car entity with 8 base fields like the following:
  $fields['color'] = BaseFieldDefinition::create('list_string')
    -&gt;setLabel(t('Color'))
    -&gt;setRequired(TRUE)
    -&gt;setSettings([
      'allowed_values' =&gt; [
        'Blue' =&gt; 'Blue',
        'Green' =&gt; 'Green',
        'Red' =&gt; 'Red',
      ],
    ])
    -&gt;setDisplayOptions('view', [
      'label' =&gt; 'inline',
      'type' =&gt; 'string',
      'weight' =&gt; 1,
    ])
    -&gt;setDisplayOptions('form', [
      'type' =&gt; 'options_select',
      'weight' =&gt; 1,
    ])
    -&gt;setDisplayConfigurable('form', TRUE)
    -&gt;setDisplayConfigurable('view', TRUE);

I have a requirement to allow the end user to partially change some parts of some of the base fields like order and allowed values using custom simplified forms.  I have the following code in the 'submitForm' function of a form.
  $field_definition = $this-&gt;entityDefinitionUpdateManager-&gt;getFieldStorageDefinition('color', 'car_module');
  $field_definition-&gt;setRequired(FALSE);
  $this-&gt;entityDefinitionUpdateManager-&gt;updateFieldStorageDefinition($field_definition);

When the 'Save' button is hit, the server takes a long time to respond like database changes are being made but the field definition does not get updated.
Base fields are defined in code. When code updates change the database schema you can implement the updates via entityDefinitionUpdateManager in an update hook as shown in the question. This is not possible in a form submit.
If you want to store field settings in a form submit load the field config and save it:
// if the entity type has no bundles use the entity type id:
$entity_type_id = 'vehicle';
$bundle = 'vehicle';

$fields = \Drupal::service('entity_field.manager')-&gt;getBaseFieldDefinitions($entity_type_id);
$field_config = $fields['field_example']-&gt;getConfig($bundle);
// make changes
$field_config-&gt;save();

For form and view display settings you can use EntityDisplayRepositoryInterface::getFormDisplay and EntityDisplayRepositoryInterface::getViewDisplay:
$display_repository = \Drupal::service('entity_display.repository');
$display = $display_repository-&gt;getViewDisplay($entity_type_id, $bundle, 'default');
$display-&gt;setComponent('field_example', $display_options);
$display-&gt;save();

For both code examples if there is no configuration stored yet it will be created.

Your question is about a custom form. Instead you could expose the core field admin UI by adding field_ui_base_route to your entity, even if you don't intend to use bundles or view modes. This works also for base fields marked as configurable. See How do I add a view mode to a simple custom entity?