Skip to Content

SOME/IP ​

EcuBus-Pro supports the SOME/IP protocol and can be used for developing and testing SOME/IP-enabled devices.

Configuration ​

EcuBus-Pro's SOME/IP functionality is based on vSomeIP. For configuration details that are unclear, please refer to the vSomeIP Configuration Documentation.

Add SOME/IP Configuration ​

Add a SOME/IP configuration by clicking SOA -> SOA Config -> Add SOME/IP Configuration.

Add SOME/IP Configuration

Configure SOME/IP ​

Click a SOME/IP configuration item to open its settings.

SOME/IP Configuration

Device Configuration ​

Each SOME/IP configuration must bind to one Ethernet device.

  • Select the NIC used for SOME/IP communication.
  • Verify local IP and subnet are reachable from the target ECU/service.
  • In multi-NIC environments, explicitly bind to the NIC used for test traffic.

Application Configuration ​

Each SOME/IP configuration corresponds to one application and requires an Application ID.

  • Application ID range: 1 to 65535
  • The value must be unique in the same runtime context.
  • It should match your vSomeIP runtime expectation when integrating with external services.

Service Discovery Configuration ​

This section controls whether SOME/IP Service Discovery (SD) is enabled.

If SD is enabled, configure multicast and timing settings (for example multicast address, SD port, offer/request timing, and TTL).

TIP

If service discovery is enabled, you may need multicast routing/firewall configuration on your computer.

Service Configuration ​

SOME/IP Service Configuration

For each service, configure:

  1. Service ID - The unique identifier for the service, ranging from 1-65535
  2. Service Instance ID - The unique identifier for the service instance, ranging from 1-65535
  3. Whether to enable TCP reliable transmission and the corresponding port number
  4. Whether to enable UDP unreliable transmission and the corresponding port number

SOME/IP Interactor ​

Use SOME/IP Interactor to quickly send SOME/IP actions and inspect responses/messages.

SOME/IP Interactor

Interactor Configuration ​

Hover over the interactor block and click Edit.

Connection Configuration ​

SOME/IP Interactor Connection ConfigurationSOME/IP Interactor Connection Configuration

Edit Request ​

TIP

Selecting requests from the database is not currently supported.

SOME/IP Interactor Request Configuration

Common Action Flow (Subscribe Before Notify) ​

For event-based communication, use this sequence:

  1. Configure a subscribe action (someipOp=subscribe) for the target Service/Instance/Event Group.
  2. Execute the subscribe action first and confirm subscription succeeds.
  3. Trigger or wait for remote notify messages.
  4. Observe messages in Trace or in the Interactor response area.

IMPORTANT

If you do not subscribe first, notify messages are typically not delivered to the client.

Subscribe Action Screenshot

Notify Reception Screenshot

  • Service/Instance/Method/Event Group IDs match on both sides.
  • Local NIC/IP binding is correct.
  • UDP/TCP ports are consistent with remote service.
  • Service Discovery multicast settings are reachable.
  • Firewall allows SOME/IP and SD traffic.

SOME/IP Script ​

Util.OnSomeipMessage Listen to SOME/IP Messages ​

Listen to SOME/IP messages. When a SOME/IP message is received, the callback function will be called.

typescript
// Listen to all SOME/IP messages
Util.OnSomeipMessage(true, (msg) => {
  console.log('Received SOMEIP message:', msg);
});

// Listen to SOME/IP messages for a specific service/instance/method
Util.OnSomeipMessage('0034.5678.90ab', (msg) => {
  console.log('Received specific SOMEIP message:', msg);
});

// Listen to SOME/IP messages for a specific service with wildcards
Util.OnSomeipMessage('0034.*.*', (msg) => {
  console.log('Received specific SOMEIP message:', msg);
});

output Output SOME/IP Messages ​

Output SOME/IP messages. You can output SOME/IP requests and SOME/IP responses.

typescript
import { SomeipMessageRequest, SomeipMessageResponse, output } from 'ECB'

Util.OnSomeipMessage('1234.*.*', async (msg) => {
  if (msg instanceof SomeipMessageRequest) {
    const response = SomeipMessageResponse.fromSomeipRequest(msg)
    await output(response)
  }
})