arm_sync_file_range - Linux


arm_sync_file_range is a Linux command that provides a method for synchronizing data between the host system and an Arm-based device over an Arm System Management Interface (SMI) channel. It allows for the selective transfer of data to or from a specific file or file range within the device’s memory. This command is commonly used in debugging and maintenance scenarios or when exchanging data between the host and the device.


arm_sync_file_range /dev/arm_smmu <action> <flags> <device_address> <host_address> <num_bytes> [<offset>]


  • -r: Read data from the device.
  • -w: Write data to the device.
  • -c: Copy data from the device to the host.
  • -m: Map the device’s memory into the host’s virtual address space.
  • -u: Unmap the device’s memory from the host’s virtual address space.
  • -f: File descriptor of the file to be synchronized.
  • -o: Offset within the file to start synchronization.


Example 1: Read 1024 bytes from the device’s memory at address 0x1000 and save it to a file:

arm_sync_file_range /dev/arm_smmu -r -f my_file.bin -d 0x1000 -h 1024

Example 2: Write 2048 bytes to the device’s memory at address 0x2000 from a file:

arm_sync_file_range /dev/arm_smmu -w -f my_file.bin -d 0x2000 -h 2048

Example 3: Map the device’s memory region starting at address 0x3000 into the host’s virtual address space:

arm_sync_file_range /dev/arm_smmu -m -d 0x3000

Common Issues

  • Ensure that the arm_smmu module is loaded in the kernel.
  • Check that the device is properly connected and configured.
  • Verify that the specified file exists and is accessible.
  • Ensure that the specified device address and size are valid.


arm_sync_file_range can be used in conjunction with other commands to automate tasks. For instance, it can be combined with dd to create a disk image from a device:

arm_sync_file_range /dev/arm_smmu -r -f my_image.img -d 0x0 -h <disk size> | dd of=/dev/sdx

Related Commands

  • arm_smmu: Provides access to the SMU control registers.
  • dd: A utility for copying and converting data.
  • fsync: Forces the write of data from the host to the device.