+        # Loop until 'period' is writable, because application of udev rules
+        # after the above pin export is asynchronous.
+        # Without this loop, the following properties may not be writable yet.
+        for i in range(PWMOut.PWM_STAT_RETRIES):
+            try:
+                with open(
+                    os.path.join(channel_path, self._pin_path.format(self._pwmpin), "period"), 'w'
+                ):
+                    print('#### okay ####')
+                    break
+            except IOError as e:
+                if e.errno != EACCES or (e.errno == EACCES and i == PWMOut.PWM_STAT_RETRIES - 1):
+                    print('#### catch ####')
+                    raise PWMError(e.errno, "Opening PWM period: " + e.strerror)
+            sleep(PWMOut.PWM_STAT_DELAY)
+