Ashes of Indian independence hero Mahatma Gandhi, kept for decades by a family friend after his assassination, have been scattered off South Africa's coast, his family said.

"About 200 people attended. Everything went well, it was a beautiful ceremony," said Ela Gandhi, granddaughter of the apostle of non-violence.

A photographer said the pre-dawn ceremony was "dignified".

"Before the immersion took place, the Hindu priest recited hymns. Gandhi's great grandson poured the ashes into the sea and afterwards people threw flowers as a sign of their final goodbyes," he said.

A radical nationalist shot Gandhi on January 30, 1948 in India, just months after he led the country to independence from Britain. He was cremated according to Hindu custom.

Normally, ashes are immersed in rivers or the sea within days but Gandhi's ashes were divided and put in several urns and sent around India and across the globe so his followers could hold memorials.

One urn came to South Africa, where Gandhi had come to practise law in 1893, living in the country on and off for 21 years.

A family friend, Vilas Mehta, helped with the arrangements for the prayers and the ashes were immersed after 10 days, according to the Gandhi Development Trust in Durban.

Unknown to the family, Mehta kept a few remnants of the ashes and guarded them in secret for the rest of her life, the Trust said.

She "decided to take a little bit of the ashes and keep it in safekeeping as a memento of that occasion, not realising that it is our custom to immerse them," said Ela Gandhi.

When Mehta passed on, her daughter-in-law decided to return them to the Gandhi family.

-AFP