pshlab Posted February 13, 2023 Share Posted February 13, 2023 /boot/armbianEnv.txt rebooting pwm all display working fine 1 Quote Link to comment Share on other sites More sharing options...
Biohazard777 Posted February 24, 2023 Share Posted February 24, 2023 Thanks @pshlab, I used your post as a starting point to enable i2c on my OPi5. orangepi5:~:% cat /boot/armbianEnv.txt verbosity=1 bootlogo=true overlay_prefix=rockchip-rk3588-opi5 overlays=i2c1-m2 i2c1-m4 i2c3-m0 i2c5-m3 fdtfile=rockchip/rk3588s-orangepi-5.dtb rootdev=UUID=09d57252-cd1c-4b66-8d47-7711aba97e59 rootfstype=ext4 usbstoragequirks=0x2537:0x1066:u,0x2537:0x1068:u 0 Quote Link to comment Share on other sites More sharing options...
Pronobis Posted May 9, 2023 Share Posted May 9, 2023 Has anybody actually managed to make a hardware PWM work programatically on orange pi 5? wiringPi keeps telling me "the pin you choose doesn't support hardware PWM". This with all PWM pins activated. Thanks for your help. 0 Quote Link to comment Share on other sites More sharing options...
royk Posted May 9, 2023 Share Posted May 9, 2023 At least the PWM fan works fine with the thermal governor on step_wise. Are you sure that you've the overlay files in the right folder? Or did you also activate other overlays that use the same pin? 0 Quote Link to comment Share on other sites More sharing options...
Dara Ó hEidhin Posted August 30, 2023 Share Posted August 30, 2023 Based on page 174 in the usermanual (https://drive.google.com/file/d/1TogN8KUzQKUH1DTtjWBQA1aFVhquG_PJ/view?pli=1) install the python rpc library pip install rpyc log in as root and create the following server.py file # server.py # server.py import rpyc from rpyc.utils.server import ThreadedServer from subprocess import PIPE, run @rpyc.service class TestService(rpyc.Service): PINS = {2:"pwmchip5"} def bash(self, cmdstr:str): '''Run shell command Args: cmdstr (str): shell command string ''' try: cmd = run( cmdstr, stdout=PIPE, encoding="ascii", shell=True ) except Exception as e: print(cmdstr) print(e) @rpyc.exposed def pwm(self, pin: int, period: int, duty_cycle: int) -> str: '''Set PWM Args: pin (int): wiringpi pin number period (int): set period duty_cycle (int): set duty cycle Returns: str: _description_ ''' chip = self.PINS[pin] c1 = f"echo 0 > /sys/class/pwm/{chip}/export" c2 = f"echo {period} > /sys/class/pwm/{chip}/pwm0/period" c3 = f"echo {duty_cycle} > /sys/class/pwm/{chip}/pwm0/duty_cycle" c4 = f"echo 1 > /sys/class/pwm/{chip}/pwm0/enable" for cmdstr in [c1,c2,c3,c4]: self.bash(cmdstr) return f"Success: {pin=} {period=} {duty_cycle=} {chip=}" @rpyc.exposed def disable(self) -> str: self.bash("echo 0 > /sys/class/pwm/{chip}/pwm0/enable") return 'Success' print('starting PWM server') server = ThreadedServer(TestService, port=18811) server.start() This can be automatically started at boot and as root using crontab Then use the following snippet as the regular non root user import rpyc connection = rpyc.connect("localhost", 18811) print(connection.root.pwm(2, 20000000, 5000000)) This creates a 50Hz where the pwm arguments are (pin, period, duty_cycle) you may need to add to or edit line 8 in the server code to set up your pwm pins PINS = {2:"pwmchip5"} You may need to enable these pins as per page 172 of the doc above (see image below) 0 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.